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