60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
# File 'lib/command/send.rb', line 60
def execute(argv)
super
device = get_device(argv)
unless device
error "デバイス名が指定されていないか、間違っています。\n" +
"narou setting device=デバイス名 で指定出来ます。\n" +
"指定出来るデバイス名:" + Device::DEVICES.keys.join(", ")
exit Narou::EXIT_ERROR_CODE
end
unless device.physical_support?
error "#{device.display_name} への直接送信は対応していません"
exit Narou::EXIT_ERROR_CODE
end
unless device.connecting?
error "#{device.display_name} が接続されていません"
exit Narou::EXIT_ERROR_CODE
end
@options["hotentry"] = Inventory.load("local_setting")["hotentry"]
send_all = false
titles = {}
if argv.empty?
send_all = true
Database.instance.each do |id, data|
next if @options["without-freeze"] && Narou.novel_frozen?(id)
argv << id
titles[id] = data["title"]
end
if @options["hotentry"]
argv << "hotentry"
titles["hotentry"] = "hotentry"
end
end
case
when @options["command-backup-bookmark"]
process_backup_bookmark(device)
exit
when @options["command-restore-bookmark"]
process_restore_bookmark(device)
exit
end
tagname_to_ids(argv)
argv.each do |target|
if target == "hotentry"
ebook_path = Update.get_newest_hotentry_file_path(device)
else
ebook_path = Narou.get_ebook_file_path(target, device.ebook_file_ext)
end
unless ebook_path
error "#{target} は存在しません"
next
end
unless File.exist?(ebook_path)
error "まだファイル(#{File.basename(ebook_path)})が無いようです" unless send_all
next
end
if send_all
if device.ebook_file_old?(ebook_path)
if target == "hotentry"
display_target = target
else
display_target = "ID:#{target} #{TermColorLight.escape(titles[target])}"
end
puts "<bold><green>#{display_target}</green></bold>".termcolor
else
next
end
end
print "#{device.name}へ送信しています"
exit_copy = false
copy_to_path = nil
Thread.abort_on_exception = true
Thread.new do
copy_to_path = device.copy_to_documents(ebook_path)
exit_copy = true
end
until exit_copy
print "."
sleep(0.5)
end
puts
if copy_to_path
puts copy_to_path + " へコピーしました"
else
error "#{device.name}が見つからなかったためコピー出来ませんでした"
exit Narou::EXIT_ERROR_CODE end
end
if send_all && @options["backup-bookmark"]
process_backup_bookmark(device)
end
rescue Device::SendFailure, Interrupt
puts "送信を中断しました"
exit Narou::EXIT_INTERRUPT
end
|