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