lib/command/send.rb in narou-1.2.0 vs lib/command/send.rb in narou-1.2.1

- old
+ new

@@ -12,58 +12,75 @@ def oneline_help "変換したEPUB/MOBIを電子書籍端末に送信します" end def initialize - super("<device> <target1> [<target2> ...]") + super("<device> [<target1> <target2> ...]") @opt.separator <<-EOS - ・指定した小説の電子書籍データ(#{Device::DEVICES.map{|_,d| d::EBOOK_FILE_EXT}.join(", ")})を<device>で指定した端末に送信します。 + ・<target>で指定した小説の電子書籍データ(#{Device::DEVICES.map{|_,d| d::EBOOK_FILE_EXT}.join(", ")})を<device>で指定した端末に送信します。 <device>には現在 #{Device::DEVICES.keys.join(", ")} が指定出来ます。 ・narou setting device=<device>としておけば、<device>の入力を省略できます。 また、convertコマンドで変換時に(端末がPCに接続されていれば)自動でデータを送信するようになります。 + ・<target>を省略した場合、管理している小説全てのファイルのタイムスタンプを端末のものと比べて新しければ送信します。 Example: narou send kindle 6 narou send kobo 6 + + # <device>の省略 narou setting device=kindle - narou send 6 # <device>の省略 + narou send 6 + + narou send # 端末のファイルより新しいファイルがあれば送信 EOS end def get_device(argv) - if Device.exists?(argv.first) + if argv.first && Device.exists?(argv.first) return Narou.get_device(argv.shift) end Narou.get_device end def execute(argv) super - if argv.empty? - puts @opt.help - return - end device = get_device(argv) unless device error "デバイス名を指定して下さい" exit 1 end unless device.connecting? error "#{device.name}が接続されていません" exit 1 end + send_all = false + titles = {} + if argv.empty? + send_all = true + Database.instance.each do |id, data| + argv << id + titles[id] = data["title"] + end + end argv.each do |target| ebook_path = Narou.get_ebook_file_path(target, device.ebook_file_ext) unless ebook_path error "#{target} は存在しません" next end unless File.exists?(ebook_path) - error "まだファイル(#{File.basename(ebook_path)})が無いようです" + error "まだファイル(#{File.basename(ebook_path)})が無いようです" unless send_all next end + if send_all + if device.ebook_file_old?(ebook_path) + puts "<green>ID:#{target} #{titles[target]}</green>".termcolor + else + next + end + end print "#{device.name}へ送信しています" exit_copy = false copy_to_path = nil Thread.new do copy_to_path = device.copy_to_documents(ebook_path) @@ -71,11 +88,11 @@ end until exit_copy print "." sleep(0.5) end - puts if copy_to_path + puts puts copy_to_path + " へコピーしました" else error "#{device.name}が見つからなかったためコピー出来ませんでした" exit 1 # next しても次も失敗すると分かりきっているためここで終了する end