lib/command/remove.rb in narou-1.4.3 vs lib/command/remove.rb in narou-1.4.4

- old
+ new

@@ -14,30 +14,48 @@ ・削除したい小説のNコード、URL、タイトルもしくはIDを指定して下さい。 IDは #{@opt.program_name} list を参照して下さい。 ・一度に複数の小説を指定する場合は空白で区切って下さい。 ・削除確認をスキップするには -y オプションを有効にして下さい。 - ・削除するのはデータベースのインデックスだけで、変換済みテキストファイルやMOBIファイル等はそのまま残ります。 + ・削除するのはデータベースのインデックスだけで、変換済みテキストファイルやMOBIファイル等はそのまま残ります。ファイルをすべて削除する場合は --with-file オプションを指定して下さい。 Example: narou remove n9669bk narou remove http://ncode.syosetu.com/n9669bk/ narou remove n9669bk http://ncode.syosetu.com/n4259s/ narou remove 0 1 -y narou remove n9669bk --with-file # ファイルも完全に削除する + narou remove --all-ss # 連載小説をすべて削除する + narou remove --all-ss --with-file # 短編小説をファイルも含めてすべて削除する Options: EOS @opt.on("-y", "--yes", "削除確認メッセージを表示しない") { @options["yes"] = true } @opt.on("--with-file", "小説の保存フォルダ・ファイルも全て削除する") { @options["with-file"] = true } + @opt.on("--all-ss", "短編小説をすべて削除する") { + @options["all-ss"] = true + } end + def get_all_short_story + Database.instance.get_object.values.select { |v| v["novel_type"] == 2 } + end + def execute(argv) super + novels = [] + if @options["all-ss"] + novels = get_all_short_story + if novels.count == 0 + puts "短編小説がひとつもありません" + return + end + argv += novels.map { |n| n["id"].to_s } + end if argv.empty? puts @opt.help return end argv.each_with_index do |target, i|