lib/command/update.rb in narou-1.7.0 vs lib/command/update.rb in narou-1.7.1
- old
+ new
@@ -1,93 +1,93 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright 2013 whiteleaf. All rights reserved.
-#
-
-require_relative "../database"
-require_relative "../downloader"
-
-module Command
- class Update < CommandBase
- def self.oneline_help
- "小説を更新します"
- end
-
- def initialize
- super("[<target> ...] [options]")
- @opt.separator <<-EOS
-
- ・管理対象の小説を更新します。
- 更新したい小説のNコード、URL、タイトル、IDもしくは別名を指定して下さい。
- IDは #{@opt.program_name} list を参照して下さい。
- ・対象を指定しなかった場合、すべての小説の更新をチェックします。
- ・一度に複数の小説を指定する場合は空白で区切って下さい。
- ・全て更新する場合、convert.no-openが設定されていなくても保存フォルダは開きません。
-
- Examples:
- narou update # 全て更新
- narou u # 短縮コマンド
- narou update 0 1 2 4
- narou update n9669bk 異世界迷宮で奴隷ハーレムを
- narou update http://ncode.syosetu.com/n9669bk/
-
- Options:
- EOS
- @opt.on("-n", "--no-convert", "変換をせずアップデートのみ実行する") {
- @options["no-convert"] = true
- }
- @opt.on("-a", "--convert-only-new-arrival", "新着のみ変換を実行する") {
- @options["convert-only-new-arrival"] = true
- }
- end
-
- def execute(argv)
- super
- update_target_list = argv.dup
- no_open = false
- if update_target_list.empty?
- Database.instance.each_key do |id|
- update_target_list << id
- end
- no_open = true
- end
- tagname_to_ids(update_target_list)
- update_target_list.each_with_index do |target, i|
- display_message = nil
- data = Downloader.get_data_by_target(target)
- if !data
- display_message = "<bold><red>[ERROR]</red></bold> #{target} は管理小説の中に存在しません".termcolor
- elsif Narou.novel_frozen?(target)
- if argv.length > 0
- display_message = "ID:#{data["id"]} #{data["title"]} は凍結中です"
- else
- next
- end
- end
- Helper.print_horizontal_rule if i > 0
- if display_message
- puts display_message
- next
- end
- result = Downloader.start(target)
- case result.status
- when :ok
- unless @options["no-convert"] ||
- (@options["convert-only-new-arrival"] && !result.new_arrivals)
- convert_argv = [target]
- convert_argv << "--no-open" if no_open
- Convert.execute!(convert_argv)
- end
- when :failed
- puts "ID:#{data["id"]} #{data["title"]} の更新は失敗しました"
- when :canceled
- puts "ID:#{data["id"]} #{data["title"]} の更新はキャンセルされました"
- when :none
- puts "#{data["title"]} に更新はありません"
- end
- end
- rescue Interrupt
- puts "アップデートを中断しました"
- exit 1
- end
- end
-end
+# -*- coding: utf-8 -*-
+#
+# Copyright 2013 whiteleaf. All rights reserved.
+#
+
+require_relative "../database"
+require_relative "../downloader"
+
+module Command
+ class Update < CommandBase
+ def self.oneline_help
+ "小説を更新します"
+ end
+
+ def initialize
+ super("[<target> ...] [options]")
+ @opt.separator <<-EOS
+
+ ・管理対象の小説を更新します。
+ 更新したい小説のNコード、URL、タイトル、IDもしくは別名を指定して下さい。
+ IDは #{@opt.program_name} list を参照して下さい。
+ ・対象を指定しなかった場合、すべての小説の更新をチェックします。
+ ・一度に複数の小説を指定する場合は空白で区切って下さい。
+ ・全て更新する場合、convert.no-openが設定されていなくても保存フォルダは開きません。
+
+ Examples:
+ narou update # 全て更新
+ narou u # 短縮コマンド
+ narou update 0 1 2 4
+ narou update n9669bk 異世界迷宮で奴隷ハーレムを
+ narou update http://ncode.syosetu.com/n9669bk/
+
+ Options:
+ EOS
+ @opt.on("-n", "--no-convert", "変換をせずアップデートのみ実行する") {
+ @options["no-convert"] = true
+ }
+ @opt.on("-a", "--convert-only-new-arrival", "新着のみ変換を実行する") {
+ @options["convert-only-new-arrival"] = true
+ }
+ end
+
+ def execute(argv)
+ super
+ update_target_list = argv.dup
+ no_open = false
+ if update_target_list.empty?
+ Database.instance.each_key do |id|
+ update_target_list << id
+ end
+ no_open = true
+ end
+ tagname_to_ids(update_target_list)
+ update_target_list.each_with_index do |target, i|
+ display_message = nil
+ data = Downloader.get_data_by_target(target)
+ if !data
+ display_message = "<bold><red>[ERROR]</red></bold> #{target} は管理小説の中に存在しません".termcolor
+ elsif Narou.novel_frozen?(target)
+ if argv.length > 0
+ display_message = "ID:#{data["id"]} #{data["title"]} は凍結中です"
+ else
+ next
+ end
+ end
+ Helper.print_horizontal_rule if i > 0
+ if display_message
+ puts display_message
+ next
+ end
+ result = Downloader.start(target)
+ case result.status
+ when :ok
+ unless @options["no-convert"] ||
+ (@options["convert-only-new-arrival"] && !result.new_arrivals)
+ convert_argv = [target]
+ convert_argv << "--no-open" if no_open
+ Convert.execute!(convert_argv)
+ end
+ when :failed
+ puts "ID:#{data["id"]} #{data["title"]} の更新は失敗しました"
+ when :canceled
+ puts "ID:#{data["id"]} #{data["title"]} の更新はキャンセルされました"
+ when :none
+ puts "#{data["title"]} に更新はありません"
+ end
+ end
+ rescue Interrupt
+ puts "アップデートを中断しました"
+ exit 1
+ end
+ end
+end