lib/command/backup.rb in narou-1.5.11 vs lib/command/backup.rb in narou-1.6.0

- old
+ new

@@ -8,11 +8,11 @@ module Command class Backup < CommandBase BACKUP_DIR_NAME = "backup" - def oneline_help + def self.oneline_help "小説のバックアップを作成します" end def initialize super("<target> [<target2> ...]") @@ -20,11 +20,11 @@ ・指定した小説のバックアップを作成します。 ・バックアップファイルはZIP圧縮され、小説保存フォルダ直下の#{BACKUP_DIR_NAME}フォルダに保存されます。 ・バックアップ対象は、バックアップファイル以外の小説保存フォルダにあるファイル全てが対象です。 - Example: + Examples: narou backup 0 narou backup n9669bk narou backup 0 1 musyoku EOS end @@ -40,14 +40,20 @@ Dir.chdir(novel_dir) paths = Dir.glob("**/*").keep_if { |path| File.file?(path) && path.split("/", 2)[0] != BACKUP_DIR_NAME } FileUtils.mkdir(BACKUP_DIR_NAME) unless File.exists?(BACKUP_DIR_NAME) - Zip.unicode_names = true + Zip.unicode_names = true unless Helper.os_windows? Zip::File.open(File.join(BACKUP_DIR_NAME, zipfilename), Zip::File::CREATE) do |zip| paths.each do |path| - zip.add(path, path) + if Helper.os_windows? + zipped_filename = path.encode(Encoding::Windows_31J, + invalid: :replace, undef: :replace, replace: "_") + else + zipped_filename = path + end + zip.add(zipped_filename, path) end end Dir.chdir(pwd) zipfilename end @@ -56,9 +62,10 @@ super if argv.empty? puts @opt.help return end + tagname_to_ids(argv) require "zip" argv.each_with_index do |target, i| Helper.print_horizontal_rule if i > 0 data = Downloader.get_data_by_target(target) unless data