lib/pione/command/pione-clean.rb in pione-0.2.2 vs lib/pione/command/pione-clean.rb in pione-0.3.0
- old
+ new
@@ -1,20 +1,63 @@
module Pione
module Command
- # PioneClean is a command for clearing temporary files of PIONE system.
+ # PioneClean is a command for clearing temporary files created by PIONE
+ # system.
class PioneClean < BasicCommand
- define_info do
- set_name "pione-clean"
- set_banner "Clean working directories and file cache directories."
- end
+ #
+ # basic informations
+ #
- define_option do
- use :debug
+ command_name "pione-clean"
+ command_banner "Clean working directories and file cache directories."
+
+ #
+ # options
+ #
+
+ use_option :debug
+
+ #
+ # command lifecycle: setup phase
+ #
+
+ setup :package_database
+
+ def setup_package_database
+ @db = Package::Database.load
end
- start do
+ #
+ # command lifecycle: execution phase
+ #
+
+ execute :remove_working_directory
+ execute :remove_cache_directory
+ execute :remove_ppg_cache
+ execute :remove_directory_cache
+
+ def execute_remove_working_directory
FileUtils.remove_entry_secure(Global.working_directory_root)
+ end
+
+ def execute_remove_cache_directory
FileUtils.remove_entry_secure(Global.file_cache_directory_root)
+ end
+
+ def execute_remove_ppg_cache
+ Global.ppg_package_cache_directory.each_entry do |entry|
+ unless @db.has_digest?(Package::PackageFilename.parse(entry.basename).digest)
+ entry.delete
+ end
+ end
+ end
+
+ def execute_remove_directory_cache
+ Global.directory_package_cache_directory.each_entry do |entry|
+ unless @db.has_digest?(entry.basename)
+ entry.delete
+ end
+ end
end
end
end
end