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