narou 1.7.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of narou might be problematic. Click here for more details.

Files changed (100) hide show
  1. checksums.yaml +5 -13
  2. data/.gitignore +1 -0
  3. data/ChangeLog.md +35 -0
  4. data/Gemfile +3 -0
  5. data/LICENSE.txt +100 -0
  6. data/README.md +28 -39
  7. data/lib/color.rb +0 -2
  8. data/lib/command.rb +1 -0
  9. data/lib/command/convert.rb +33 -4
  10. data/lib/command/diff.rb +5 -4
  11. data/lib/command/download.rb +9 -1
  12. data/lib/command/flag.rb +2 -2
  13. data/lib/command/list.rb +1 -1
  14. data/lib/command/mail.rb +3 -3
  15. data/lib/command/remove.rb +2 -1
  16. data/lib/command/send.rb +7 -6
  17. data/lib/command/setting.rb +39 -95
  18. data/lib/command/tag.rb +25 -13
  19. data/lib/command/update.rb +6 -1
  20. data/lib/command/version.rb +5 -1
  21. data/lib/command/web.rb +111 -0
  22. data/lib/commandbase.rb +5 -2
  23. data/lib/commandline.rb +16 -0
  24. data/lib/converterbase.rb +20 -14
  25. data/lib/device.rb +5 -4
  26. data/lib/downloader.rb +68 -39
  27. data/lib/eventable.rb +72 -0
  28. data/lib/helper.rb +105 -37
  29. data/lib/ini.rb +2 -1
  30. data/lib/input.rb +68 -0
  31. data/lib/inventory.rb +4 -0
  32. data/lib/kindlestrip.rb +2 -2
  33. data/lib/logger.rb +41 -19
  34. data/lib/narou.rb +10 -0
  35. data/lib/narou/api.rb +1 -1
  36. data/lib/novelconverter.rb +8 -21
  37. data/lib/novelsetting.rb +79 -4
  38. data/lib/version.rb +1 -1
  39. data/lib/web/all.rb +12 -0
  40. data/lib/web/appserver.rb +612 -0
  41. data/lib/web/helper4web.rb +15 -0
  42. data/lib/web/progressbar4web.rb +32 -0
  43. data/lib/web/public/favicon.ico +0 -0
  44. data/lib/web/public/resources/bootbox.min.js +6 -0
  45. data/lib/web/public/resources/common.ui.js +143 -0
  46. data/lib/web/public/resources/dataTables.colVis.js +1113 -0
  47. data/lib/web/public/resources/help/rect_select.png +0 -0
  48. data/lib/web/public/resources/help/ssmain.png +0 -0
  49. data/lib/web/public/resources/help/tag.png +0 -0
  50. data/lib/web/public/resources/jquery.moveto.js +44 -0
  51. data/lib/web/public/resources/jquery.outerclick.js +60 -0
  52. data/lib/web/public/resources/jquery.slidenavbar.js +89 -0
  53. data/lib/web/public/resources/narou.library.js +815 -0
  54. data/lib/web/public/resources/narou.ui.js +993 -0
  55. data/lib/web/public/resources/perfect-scrollbar.min.css +5 -0
  56. data/lib/web/public/resources/perfect-scrollbar.min.js +4 -0
  57. data/lib/web/public/resources/shortcut.js +223 -0
  58. data/lib/web/public/resources/sort_asc.png +0 -0
  59. data/lib/web/public/resources/sort_desc.png +0 -0
  60. data/lib/web/public/resources/toggle-switch.css +322 -0
  61. data/lib/web/public/robots.txt +3 -0
  62. data/lib/web/public/test/jquery.outerclick.html +72 -0
  63. data/lib/web/pushserver.rb +110 -0
  64. data/lib/web/settingmessages.rb +14 -0
  65. data/lib/web/streaminginput.rb +103 -0
  66. data/lib/web/streaminglogger.rb +52 -0
  67. data/lib/web/views/about.haml +11 -0
  68. data/lib/web/views/help.haml +105 -0
  69. data/lib/web/views/index.haml +245 -0
  70. data/lib/web/views/js/widget.erb +74 -0
  71. data/lib/web/views/layout.haml +49 -0
  72. data/lib/web/views/novels/setting.haml +177 -0
  73. data/lib/web/views/settings.haml +115 -0
  74. data/lib/web/views/style.scss +737 -0
  75. data/lib/web/views/widget.haml +39 -0
  76. data/lib/web/web-socket-ruby/.gitignore +1 -0
  77. data/lib/web/web-socket-ruby/README.txt +75 -0
  78. data/lib/web/web-socket-ruby/lib/web_socket.rb +601 -0
  79. data/lib/web/web-socket-ruby/samples/chat_server.rb +58 -0
  80. data/lib/web/web-socket-ruby/samples/echo_server.rb +33 -0
  81. data/lib/web/web-socket-ruby/samples/stdio_client.rb +25 -0
  82. data/lib/web/worker.rb +87 -0
  83. data/narou.gemspec +36 -3
  84. data/narou.rb +8 -6
  85. data/preset/ncode.syosetu.com/n8725k/converter.rb +2 -1
  86. data/spec/data/convert_test/replace/correct_test_replace.txt +1 -1
  87. data/spec/data/convert_test/replace/test_replace.txt +1 -1
  88. data/spec/data/convert_test/ruby/correct_test_ruby.txt +18 -1
  89. data/spec/data/convert_test/ruby/test_ruby.txt +18 -0
  90. data/spec/downloader_spec.rb +37 -0
  91. data/spec/eventable_spec.rb +172 -0
  92. data/spec/exit_code_spec.rb +67 -0
  93. data/spec/helper_spec.rb +72 -0
  94. data/spec/input_spec.rb +76 -0
  95. data/spec/logger_spec.rb +53 -0
  96. data/spec/novelsetting_spec.rb +35 -0
  97. data/spec/worker_spec.rb +56 -0
  98. data/template/ibunko_novel.txt.erb +2 -2
  99. data/template/novel.txt.erb +2 -2
  100. metadata +213 -29
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ODc0N2FkMmNlZDJiMGQ3NTVjZDI1MTVlMDEyMWJkYTE3OWM1MzY5Nw==
5
- data.tar.gz: !binary |-
6
- OTVhNTc0MzIxYWU4MGE5OGQ0YTBlZDgyMWZmYjNmMzI4Mzk0MjFmOQ==
2
+ SHA1:
3
+ metadata.gz: cf008af8f0265c697917e1b0318d796382b7fe99
4
+ data.tar.gz: 7187f31cc59d0394b01a09e8b8fef8d8afe37ae4
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YTY1ZGYwYmMyOTgxZTIyZGI4NjdhNzE4N2YzMDZiMzM4ZmZiYzZmZDZjZmIz
10
- NzI2OTk4MjY5NThmMDBjZjM4ZjBkNDVhNzMwNThhOTg0YTE2MmQ5OWYyYjc5
11
- MjRiZWEyNjQwNTJhMGZkZjVhNDA4NTE2OGI4OTRmMGUyMDA4NGI=
12
- data.tar.gz: !binary |-
13
- MzQ5ZDNhNzA3ZDc2ZTg5NzMwZTJlOTI5Yjk2MjUwZTFkNGMxNjRlODdmZTBk
14
- MGZkMzhmYmY0YmEwYmIwNjNjNWEyYWI5MGMyNjk3NGIxMTZjOGYwZTJmNzg2
15
- M2RmZTIxNzljN2UzZTFlMjk0MTcxMjUwMmQyZWZiNzMzYmUzMTc=
6
+ metadata.gz: 26864b5f132357030a6b9c0f116223601753d9b2c3e8a400fab45b4f2af7f86e875196e5972d6227bfe64f0a78a5c4531e92bdd8bf37e17c85557d8037e3d6c1
7
+ data.tar.gz: 27922bd101c849461b4627d8a6735852badbbbd20a6f88ad5511ded7b17bea32d56d3ac4fd5ffe2a86b9611c7eeadb0070a7f90c9d1a5397450f367e21d1d9e3
data/.gitignore CHANGED
@@ -21,6 +21,7 @@ debug
21
21
  *.patch
22
22
  trash/
23
23
  .ruby-version
24
+ .sass-cache/
24
25
 
25
26
  \#*\#
26
27
 
data/ChangeLog.md CHANGED
@@ -2,6 +2,40 @@
2
2
  更新履歴 - ChangeLog
3
3
  ====================
4
4
 
5
+ 2.0.0 : 2014/12/26
6
+ ------------------
7
+ #### 追加機能
8
+ - `web` コマンドを実装しました。ブラウザベースによるWEB UIを使うことが出来ます
9
+ + `narou web` でWEBサーバを起動し、自動的にブラウザが開きます
10
+ + ブラウザは可能な限り最新を推奨。IEは9以下は動きません
11
+ - `download.use-subdirectory` オプションが追加されました。小説IDの先頭数文字で
12
+ サブフォルダを作成しグループ分けすることで、大量の小説を管理する場合のパフォ
13
+ ーマンス劣化に対応します
14
+ + `narou s download.use-subdirectory=true` として設定出来ます
15
+ + すでに管理済みの小説の保存フォルダは変更されません
16
+ - ダウンロード時やアップデート時の最後に、容量不足等で書籍データを送信出来なか
17
+ ったファイル一覧を表示するようにしました
18
+
19
+ #### 仕様変更
20
+ - 終了コードを整理しました
21
+ + 正常終了時:0
22
+ + 異常終了時:127
23
+ + updateコマンド及びdownloadコマンドで失敗した場合:失敗した小説の数
24
+ + settingコマンド:設定でエラーになった数
25
+ - 見出しリスト.txt を保存しなくなりました
26
+
27
+ #### Bug Fix
28
+ - 新規ダウンロードする際にエラーになる場合があったのを修正 #53
29
+ - 小説家になろうのルビ仕様に準拠していない書式があったのを修正
30
+
31
+ |が存在していなく、かつ《 》内に自動ルビ化対象文字以外がある場合に
32
+ ルビ化はされない
33
+
34
+ - 上記修正に伴い、ログ・ホライズン(n8725k)の converter.rb を差し替えました
35
+ - Java がインストールされていない場合でも EPUB ファイルの作成が成功したと表示
36
+ されてしまうのを修正 #55
37
+
38
+
5
39
  1.7.2 : 2014/11/26
6
40
  ------------------
7
41
  #### Bug Fix
@@ -12,6 +46,7 @@
12
46
  ------------------
13
47
  #### Bug Fix
14
48
  - 暁の18禁小説がダウンロードできなかったのを修正
49
+ >>>>>>> 1.8
15
50
 
16
51
 
17
52
  1.7.0 : 2014/09/27
data/Gemfile CHANGED
@@ -8,6 +8,9 @@ end
8
8
  # Specify your gem's dependencies in narou.gemspec
9
9
  gemspec
10
10
 
11
+ # development gems
12
+
11
13
  gem "rspec"
12
14
  gem "rspec-core"
15
+ gem "pry"
13
16
 
data/LICENSE.txt CHANGED
@@ -1,3 +1,5 @@
1
+ Narou.rb
2
+
1
3
  (The MIT License)
2
4
 
3
5
  Copyright (c) 2013 whiteleaf.
@@ -20,3 +22,101 @@ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
22
  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
23
  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
24
  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+
26
+ ----------------------------------------------------------------------
27
+
28
+ /**
29
+ * bootbox.js v4.3.0
30
+ *
31
+ * The MIT License
32
+ *
33
+ * Copyright (C) 2011-2014 by Nick Payne <nick@kurai.co.uk>
34
+ *
35
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
36
+ * of this software and associated documentation files (the "Software"), to deal
37
+ * in the Software without restriction, including without limitation the rights
38
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
39
+ * copies of the Software, and to permit persons to whom the Software is
40
+ * furnished to do so, subject to the following conditions:
41
+ *
42
+ * The above copyright notice and this permission notice shall be included in
43
+ * all copies or substantial portions of the Software.
44
+ *
45
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
46
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
47
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
48
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
49
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
50
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
51
+ * THE SOFTWARE
52
+ */
53
+
54
+ ----------------------------------------------------------------------
55
+
56
+ dataTables.colVis.js
57
+
58
+ MIT license
59
+ Copyright (C) 2008-2014, SpryMedia Ltd.
60
+
61
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
62
+
63
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
64
+
65
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
66
+
67
+ ----------------------------------------------------------------------
68
+
69
+ perfect-scrollbar
70
+
71
+ The MIT License (MIT)
72
+ Copyright (c) 2012, 2014 Hyunje Alex Jun and other contributors.
73
+
74
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
75
+
76
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
77
+
78
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
79
+
80
+ ----------------------------------------------------------------------
81
+
82
+ CSS Toggle Switch
83
+
84
+ This is free and unencumbered software released into the public domain.
85
+
86
+ Anyone is free to copy, modify, publish, use, compile, sell, or
87
+ distribute this software, either in source code form or as a compiled
88
+ binary, for any purpose, commercial or non-commercial, and by any
89
+ means.
90
+
91
+ In jurisdictions that recognize copyright laws, the author or authors
92
+ of this software dedicate any and all copyright interest in the
93
+ software to the public domain. We make this dedication for the benefit
94
+ of the public at large and to the detriment of our heirs and
95
+ successors. We intend this dedication to be an overt act of
96
+ relinquishment in perpetuity of all present and future rights to this
97
+ software under copyright law.
98
+
99
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
100
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
101
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
102
+ IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
103
+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
104
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
105
+ OTHER DEALINGS IN THE SOFTWARE.
106
+
107
+ For more information, please refer to <http://unlicense.org/>
108
+
109
+ ----------------------------------------------------------------------
110
+
111
+ shortcut.js
112
+
113
+ By Binny V A
114
+ License : BSD
115
+
116
+ ----------------------------------------------------------------------
117
+
118
+ web_socket.rb
119
+
120
+ Copyright: Hiroshi Ichikawa <http://gimite.net/en/>
121
+ Lincense: New BSD Lincense
122
+
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンローダ&縦書用整形スクリプト
2
2
  ============================================================
3
3
 
4
+ [![Gem Version](https://badge.fury.io/rb/narou.svg)](http://badge.fury.io/rb/narou)
5
+
4
6
  概要 - Summary
5
7
  --------------
6
8
  このアプリは[小説家になろう](http://syosetu.com/)、[小説を読もう!](http://yomou.syosetu.com/)で公開されている小説の管理、
@@ -24,58 +26,45 @@ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンロ
24
26
  更新履歴 - ChangeLog
25
27
  --------------------
26
28
 
27
- ### 1.7.2 : 2014/11/26
28
-
29
- #### Bug Fix
30
- - デバイスの容量不足で送信に失敗した小説が、再度送信されない問題を修正
31
-
32
- ----
33
-
34
- ### 1.7.1 : 2014/10/16
35
-
36
- #### Bug Fix
37
- - 暁の18禁小説がダウンロードできなかったのを修正
38
-
39
- ----
40
-
41
- ### 1.7.0 : 2014/09/27
29
+ ### 2.0.0 : 2014/12/26
42
30
 
43
31
  #### 追加機能
44
- - `list` コマンドの `--filter` オプションに `frozen` 及び `nonfrozen` が追加
45
- されました。凍結状態のフィルタリングが可能になります。また、同時に複数の値を
46
- 受け付けるようになりました
47
-
48
- narou list -f frozen (凍結された小説のみ表示)
49
- narou list -f nonfrozen (凍結されていない小説のみ表示)
50
- narou list -f "ss nonfrozen" (凍結されていない短編を表示)
32
+ - `web` コマンドを実装しました。ブラウザベースによるWEB UIを使うことが出来ます
33
+ + `narou web` でWEBサーバを起動し、自動的にブラウザが開きます
34
+ + ブラウザは可能な限り最新を推奨。IEは9以下は動きません
35
+ - `download.use-subdirectory` オプションが追加されました。小説IDの先頭数文字で
36
+ サブフォルダを作成しグループ分けすることで、大量の小説を管理する場合のパフォ
37
+ ーマンス劣化に対応します
38
+ + `narou s download.use-subdirectory=true` として設定出来ます
39
+ + すでに管理済みの小説の保存フォルダは変更されません
40
+ - ダウンロード時やアップデート時の最後に、容量不足等で書籍データを送信出来なか
41
+ ったファイル一覧を表示するようにしました
51
42
 
52
43
  #### 仕様変更
53
- - 英文判定文字に `&:;_-` を追加しました
54
- + 今までおかしかった例:Tuez-les tous, Dieu reconnaitra les siens)
55
- - 8文字以上の半角アルファベットは全角に変換せずに半角のままになります
44
+ - 終了コードを整理しました
45
+ + 正常終了時:0
46
+ + 異常終了時:127
47
+ + updateコマンド及びdownloadコマンドで失敗した場合:失敗した小説の数
48
+ + settingコマンド:設定でエラーになった数
49
+ - 見出しリスト.txt を保存しなくなりました
56
50
 
57
51
  #### Bug Fix
58
- - 行頭が英文で始まる行がオートインデントできていなかったのを修正
59
-
60
- #### その他
61
- - 起動にかかる時間及び表示処理速度を向上させました(起動時間がv1.6に比べて約50%短縮)
52
+ - 新規ダウンロードする際にエラーになる場合があったのを修正 #53
53
+ - 小説家になろうのルビ仕様に準拠していない書式があったのを修正
62
54
 
63
- ----
64
-
65
- ### 1.6.4 : 2014/09/17
55
+ |が存在していなく、かつ《 》内に自動ルビ化対象文字以外がある場合に
56
+ ルビ化はされない
66
57
 
67
- #### 追加機能
68
- - `list` コマンドに `--echo` オプション(短縮:-e)を追加しました。パイプやリダ
69
- イレクトを経由してもリストをそのまま表示します。また、ANSIColorコードの削除
70
- も同時に行うので、--no-color オプションは必要ありません
58
+ - 上記修正に伴い、ログ・ホライズン(n8725k)の converter.rb を差し替えました
59
+ - Java がインストールされていない場合でも EPUB ファイルの作成が成功したと表示
60
+ されてしまうのを修正 #55
71
61
 
72
62
  ----
73
63
 
74
- ### 1.6.3 : 2014/09/11
64
+ ### 1.7.2 : 2014/11/26
75
65
 
76
66
  #### Bug Fix
77
- - ハーメルン、Arcadiaにおいて小説が削除されている場合にエラーが出ていたのを修正
78
- - 1話も投稿されていない小説でエラーが出ていたのを修正
67
+ - デバイスの容量不足で送信に失敗した小説が、再度送信されない問題を修正
79
68
 
80
69
  ----
81
70
 
data/lib/color.rb CHANGED
@@ -30,8 +30,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
30
30
  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
31
  =end
32
32
 
33
- require "termcolorlight"
34
-
35
33
  if RbConfig::CONFIG["host_os"] =~ /mswin(?!ce)|mingw|bccwin/i
36
34
  require_relative "extensions/windows"
37
35
 
data/lib/command.rb CHANGED
@@ -33,6 +33,7 @@ module Command
33
33
  "remove" => Remove,
34
34
  "freeze" => Freeze,
35
35
  "tag" => Tag,
36
+ "web" => Web,
36
37
  "flag" => Flag,
37
38
  "mail" => Mail,
38
39
  "backup" => Backup,
@@ -15,6 +15,28 @@ module Command
15
15
  "小説を変換します。管理小説以外にテキストファイルも変換可能"
16
16
  end
17
17
 
18
+ @@sending_error_list = []
19
+
20
+ def self.display_sending_error_list
21
+ puts
22
+ puts "-" * 79
23
+ puts "・送信失敗リスト"
24
+ puts @@sending_error_list
25
+ puts
26
+ puts "<red><bold>上記のファイルの送信に失敗しました。</bold></red>".termcolor
27
+ puts "送信出来なかった原因を解消し、send コマンドを実行して下さい。"
28
+ @@sending_error_list.clear
29
+ if $stdin.tty?
30
+ puts
31
+ puts "(何かキーを押して下さい)"
32
+ $stdin.getch
33
+ end
34
+ end
35
+
36
+ def self.exists_sending_error_list?
37
+ @@sending_error_list.empty?.!
38
+ end
39
+
18
40
  def initialize
19
41
  super("<target> [<target2> ...] [options]")
20
42
  @opt.separator <<-EOS
@@ -146,27 +168,34 @@ module Command
146
168
  if @device && @device.physical_support? &&
147
169
  @device.connecting? && File.extname(ebook_file) == @device.ebook_file_ext
148
170
  if @argument_target_type == :novel
149
- Send.execute!([@device.name, target])
171
+ if Send.execute!([@device.name, target]) > 0
172
+ @@sending_error_list << ebook_file
173
+ end
150
174
  else
151
175
  puts @device.name + "へ送信しています"
152
- copy_to_path = @device.copy_to_documents(ebook_file)
176
+ copy_to_path = nil
177
+ begin
178
+ copy_to_path = @device.copy_to_documents(ebook_file)
179
+ rescue Device::SendFailure
180
+ end
153
181
  if copy_to_path
154
182
  puts copy_to_path.encode(Encoding::UTF_8) + " へコピーしました"
155
183
  else
156
184
  error "送信に失敗しました"
185
+ @@sending_error_list << ebook_file
157
186
  end
158
187
  end
159
188
  end
160
189
  end
161
190
 
162
- unless @options["no-open"]
191
+ if @options["no-open"].! && Narou.web?.!
163
192
  Helper.open_directory(File.dirname(@converted_txt_path), "小説の保存フォルダを開きますか")
164
193
  end
165
194
  end
166
195
  rescue Interrupt
167
196
  puts
168
197
  puts "変換を中断しました"
169
- exit 1
198
+ exit Narou::EXIT_ERROR_CODE
170
199
  end
171
200
 
172
201
  #
data/lib/command/diff.rb CHANGED
@@ -61,6 +61,9 @@ module Command
61
61
  @opt.on("--all-clean", "凍結済を除く全小説の差分データを削除する") {
62
62
  @options["all-clean"] = true
63
63
  }
64
+ @opt.on("--no-tool", "外部差分ツールを使用しない") {
65
+ @options["no-tool"] = true
66
+ }
64
67
  end
65
68
 
66
69
  # 引数の中の -数字 オプション(-n 数字の省略形)を -n 数字 に変換する
@@ -111,11 +114,9 @@ module Command
111
114
  return
112
115
  end
113
116
  @difftool = Inventory.load("global_setting", :global)["difftool"]
114
- unless @difftool
117
+ if @difftool.! || @options["no-tool"]
115
118
  display_diff_on_oneself(id)
116
119
  return
117
- #error "difftool が設定されていません。narou setting で difftool を設定して下さい"
118
- #return
119
120
  end
120
121
  exec_difftool(id)
121
122
  end
@@ -148,7 +149,7 @@ module Command
148
149
  res = Helper::AsyncCommand.exec(diff_cmd)
149
150
  rescue Errno::ENOENT => e
150
151
  error e.message
151
- exit 1
152
+ exit Narou::EXIT_ERROR_CODE
152
153
  ensure
153
154
  temp_paths.map(&:delete)
154
155
  end
@@ -5,6 +5,7 @@
5
5
 
6
6
  require_relative "../narou"
7
7
  require_relative "../downloader"
8
+ require_relative "../input"
8
9
 
9
10
  module Command
10
11
  class Download < CommandBase
@@ -90,6 +91,7 @@ module Command
90
91
 
91
92
  def execute(argv)
92
93
  super
94
+ mistook_count = 0
93
95
  if argv.empty?
94
96
  targets = interactive_mode
95
97
  return if targets.size == 0
@@ -102,6 +104,7 @@ module Command
102
104
  data = Downloader.get_data_by_target(download_target)
103
105
  if Narou.novel_frozen?(download_target)
104
106
  puts "#{data["title"]} は凍結中です\nダウンロードを中止しました"
107
+ mistook_count += 1
105
108
  next
106
109
  end
107
110
  if !@options["force"] && data
@@ -109,15 +112,19 @@ module Command
109
112
  puts "#{download_target} はダウンロード済みです。"
110
113
  puts "ID: #{data["id"]}"
111
114
  puts "title: #{data["title"]}"
115
+ mistook_count += 1
112
116
  else
113
- if Helper.confirm("再ダウンロードしますか")
117
+ if Narou::Input.confirm("再ダウンロードしますか")
114
118
  download_target = data["toc_url"]
115
119
  redo
120
+ else
121
+ mistook_count += 1
116
122
  end
117
123
  end
118
124
  next
119
125
  end
120
126
  if Downloader.start(download_target, @options["force"], true).status != :ok
127
+ mistook_count += 1
121
128
  next
122
129
  end
123
130
  unless @options["no-convert"]
@@ -130,6 +137,7 @@ module Command
130
137
  Remove.execute!([download_target, "-y"])
131
138
  end
132
139
  end
140
+ exit mistook_count if mistook_count > 0
133
141
  end
134
142
 
135
143
  def self.oneline_help