lib/command/flag.rb in narou-1.6.4 vs lib/command/flag.rb in narou-1.7.0
- old
+ new
@@ -1,109 +1,109 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright 2013 whiteleaf. All rights reserved.
-#
-
-require_relative "../database"
-require_relative "../downloader"
-require_relative "../inventory"
-
-module Command
- class Flag < CommandBase
- ATTRIBUTES = %w(end delete)
-
- def self.oneline_help
- "小説の各種フラグを設定します"
- end
-
- def initialize
- super("<attribute> <target> [<target2> ...]")
- @opt.separator <<-EOS.termcolor
-
- <bold><red>非推奨のコマンドです。tagコマンドを使用して下さい
- flagコマンドはv.1.7.0で廃止予定です
-
- flagデータをtagデータに移行するには、
- narou flag --convert-tag
- を実行して下さい</red></bold>
-
- ・指定した小説に各種フラグを設定します
- ・再実行で解除
- ・--on, --off オプションを付けることで強制設定可能
- ・現在指定可能なフラグ
- end : 小説が完結状態
- delete: 削除された状態
-
- Examples:
- narou flag end 100 # ID:100の小説を完結状態にする
- narou flag end --on 100 # 現在の状態に関わらず完結状態にする
-
- Options:
- EOS
- @opt.on("--on", "強制的にフラグを立てる") {
- @options["on"] = true
- }
- @opt.on("--off", "強制的にフラグをはずす") {
- @options["off"] = true
- }
- @opt.on("--convert-tag", "flagデータをtagデータに移行します") {
- modify = false
- database = Database.instance
- database.each do |id, data|
- if data["flags"]
- tags = data["flags"].keys
- tags << "404" if tags.delete("delete")
- unless tags.empty?
- Tag.execute!([id, "--add", tags.join(" "), "--color", "white"])
- end
- puts "-" * 70
- data.delete("flags")
- modify = true
- end
- end
- if modify
- database.save_database
- puts "移行が完了しました"
- end
- exit 0
- }
- end
-
- def execute(argv)
- super
- if argv.empty?
- puts @opt.help
- return
- end
- attribute = (argv.shift || "").downcase
- unless ATTRIBUTES.include?(attribute)
- error "有効なフラグを指定して下さい\n指定可能なフラグ:#{ATTRIBUTES.join(', ')}"
- exit 1
- end
- if argv.length < 1
- error "対象小説を指定して下さい"
- exit 1
- end
- database = Database.instance
- argv.each do |target|
- data = Downloader.get_data_by_target(target)
- unless data
- error "#{target} は存在しません"
- next
- end
- flags = data["flags"] || {}
- flag = !flags[attribute]
- flag = true if @options["on"]
- flag = false if @options["off"]
- flags[attribute] = flag
- if flag
- puts "#{data['title']} の #{attribute} フラグを立てました"
- else
- flags.delete(attribute)
- puts "#{data['title']} から #{attribute} フラグをはずしました"
- end
- database[data["id"]]["flags"] = flags
- end
- database.save_database
- end
- end
-end
+# -*- coding: utf-8 -*-
+#
+# Copyright 2013 whiteleaf. All rights reserved.
+#
+
+require_relative "../database"
+require_relative "../downloader"
+require_relative "../inventory"
+
+module Command
+ class Flag < CommandBase
+ ATTRIBUTES = %w(end delete)
+
+ def self.oneline_help
+ "小説の各種フラグを設定します"
+ end
+
+ def initialize
+ super("<attribute> <target> [<target2> ...]")
+ @opt.separator <<-EOS.termcolor
+
+ <bold><red>非推奨のコマンドです。tagコマンドを使用して下さい
+ flagコマンドはv.1.7.0で廃止予定です
+
+ flagデータをtagデータに移行するには、
+ narou flag --convert-tag
+ を実行して下さい</red></bold>
+
+ ・指定した小説に各種フラグを設定します
+ ・再実行で解除
+ ・--on, --off オプションを付けることで強制設定可能
+ ・現在指定可能なフラグ
+ end : 小説が完結状態
+ delete: 削除された状態
+
+ Examples:
+ narou flag end 100 # ID:100の小説を完結状態にする
+ narou flag end --on 100 # 現在の状態に関わらず完結状態にする
+
+ Options:
+ EOS
+ @opt.on("--on", "強制的にフラグを立てる") {
+ @options["on"] = true
+ }
+ @opt.on("--off", "強制的にフラグをはずす") {
+ @options["off"] = true
+ }
+ @opt.on("--convert-tag", "flagデータをtagデータに移行します") {
+ modify = false
+ database = Database.instance
+ database.each do |id, data|
+ if data["flags"]
+ tags = data["flags"].keys
+ tags << "404" if tags.delete("delete")
+ unless tags.empty?
+ Tag.execute!([id, "--add", tags.join(" "), "--color", "white"])
+ end
+ puts "-" * 70
+ data.delete("flags")
+ modify = true
+ end
+ end
+ if modify
+ database.save_database
+ puts "移行が完了しました"
+ end
+ exit 0
+ }
+ end
+
+ def execute(argv)
+ super
+ if argv.empty?
+ puts @opt.help
+ return
+ end
+ attribute = (argv.shift || "").downcase
+ unless ATTRIBUTES.include?(attribute)
+ error "有効なフラグを指定して下さい\n指定可能なフラグ:#{ATTRIBUTES.join(', ')}"
+ exit 1
+ end
+ if argv.length < 1
+ error "対象小説を指定して下さい"
+ exit 1
+ end
+ database = Database.instance
+ argv.each do |target|
+ data = Downloader.get_data_by_target(target)
+ unless data
+ error "#{target} は存在しません"
+ next
+ end
+ flags = data["flags"] || {}
+ flag = !flags[attribute]
+ flag = true if @options["on"]
+ flag = false if @options["off"]
+ flags[attribute] = flag
+ if flag
+ puts "#{data['title']} の #{attribute} フラグを立てました"
+ else
+ flags.delete(attribute)
+ puts "#{data['title']} から #{attribute} フラグをはずしました"
+ end
+ database[data["id"]]["flags"] = flags
+ end
+ database.save_database
+ end
+ end
+end