osdn-cli 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 661a7bc947152bf778ac0fa53730e720ca9ea2d6
4
- data.tar.gz: 11e3150a71086335a9f24af05d25319d2c74e3ed
3
+ metadata.gz: 69b1dbd8621213ebdb69f94647d544e5cc7fa333
4
+ data.tar.gz: a52207094f25c588a729ea815dfb0e5004e2e86b
5
5
  SHA512:
6
- metadata.gz: 8da57715c805c083613bab7d34c09078f89128b7ff3abe3ac208a8ea9023d1f29d2ff314c4b5c067bd043c79d15ac2a7cc9f5973c49fbdd9cc536ca33b0bf6e9
7
- data.tar.gz: bb29906480917dfe61582fccc9623cea8a8897a62694bf772cda235324cc7e79af60e567a621df5c5ddc23703b24453732d98f86faae3c5cafa1f3296506fb8f
6
+ metadata.gz: 25e1712b2292dd07c6c757fcf0e12ac4640471b29d862ef6260c3a87e7f645da76e6fc6fe9f9f8d94c581bb4bf7b77d35b94b1aa91bcc7b81d8c352dd66da38d
7
+ data.tar.gz: a1e05a3cc8e2acd8a15b73a66fc607825887e306e05bd8ec9971815a1b2b5b180e4e35f794d382f8e082a6814552469b5359377accaf8db6144a67bb8673e778
data/ChangeLog CHANGED
@@ -1,11 +1,16 @@
1
+ 2016-07-27 Tatsuki Sugiura <sugi@nemui.org>
2
+
3
+ * Version 0.1.6
4
+ * frs_upload, relfile: Auto retry on upload error.
5
+
1
6
  2016-07-20 Tatsuki Sugiura <sugi@nemui.org>
2
7
 
3
- * Versino 0.1.5
8
+ * Version 0.1.5
4
9
  * frs_upload, relfile: Add bandwidth limit option.
5
10
 
6
11
  2016-07-01 Tatsuki Sugiura <sugi@nemui.org>
7
12
 
8
- * Versino 0.1.4
13
+ * Version 0.1.4
9
14
  * frs_upload, relfile: Add progress options.
10
15
 
11
16
  2016-05-26 Tatsuki Sugiura <sugi@nemui.org>
@@ -199,9 +199,27 @@ module OSDN; module CLI; module Command
199
199
  OSDN::CLI._show_progress = true
200
200
  fio = file.open
201
201
  logger.info "Starting upload #{file}..."
202
- finfo = api.create_release_file target_proj, target_package(rdir), target_release(rdir), fio, visibility: @visibility
203
- fio.close
204
- OSDN::CLI._show_progress = false
202
+ max_upload_tries = 5
203
+ upload_tries = 0
204
+ begin
205
+ upload_tries += 1
206
+ finfo = api.create_release_file target_proj, target_package(rdir), target_release(rdir), fio, visibility: @visibility
207
+ rescue OSDNClient::ApiError => e
208
+ if max_upload_tries - upload_tries <= 0
209
+ logger.error "Max upload attempts (#{max_upload_tries}) has been exceeded, give up!"
210
+ raise e
211
+ elsif [0, 100, 502].member?(e.code.to_i)
212
+ fio.rewind
213
+ logger.error "Upload error (#{e.code} #{e.message}), retrying (#{upload_tries}/#{max_upload_tries})..."
214
+ sleep 10
215
+ retry
216
+ else
217
+ raise e
218
+ end
219
+ ensure
220
+ OSDN::CLI._show_progress = false
221
+ fio.close
222
+ end
205
223
  if digests.find { |type, dig| dig != finfo.send("digest_#{type}") }
206
224
  logger.error "File digests are mismatch! Upload file #{file} may be broken! Please check."
207
225
  else
@@ -121,9 +121,29 @@ module OSDN; module CLI; module Command
121
121
  logger.level <= Logger::INFO && @show_progress != false || @show_progress and
122
122
  OSDN::CLI._show_progress = true
123
123
  logger.info "Starting upload #{file}..."
124
- f = api.create_release_file target_proj, target_package, target_release, fio, visibility: @visibility
125
- fio.close
126
- OSDN::CLI._show_progress = false
124
+ max_upload_tries = 5
125
+ upload_tries = 0
126
+ f = nil
127
+ begin
128
+ upload_tries += 1
129
+ f = api.create_release_file target_proj, target_package, target_release, fio, visibility: @visibility
130
+ rescue OSDNClient::ApiError => e
131
+ if max_upload_tries - upload_tries <= 0
132
+ logger.error "Max upload attempts (#{max_upload_tries}) has been exceeded, give up!"
133
+ raise e
134
+ elsif [0, 100, 502].member?(e.code.to_i)
135
+ fio.rewind
136
+ logger.error "Upload error (#{e.code} #{e.message}), retrying (#{upload_tries}/#{max_upload_tries})..."
137
+ sleep 10
138
+ retry
139
+ else
140
+ raise e
141
+ end
142
+ ensure
143
+ fio.close
144
+ OSDN::CLI._show_progress = false
145
+ end
146
+
127
147
  if digests.find { |type, dig| dig != f.send("digest_#{type}") }
128
148
  logger.error "File digests are mismatch! Upload file #{file} may be broken! Please check."
129
149
  else
@@ -80,6 +80,10 @@ module OSDN
80
80
  command = get_command_class(command_name).new(logger)
81
81
  logger.debug "Run command #{command_name}"
82
82
  begin
83
+ Signal.trap "INT" do
84
+ puts :INT
85
+ exit
86
+ end
83
87
  command.run
84
88
  rescue OSDNClient::ApiError => e
85
89
  begin
@@ -92,7 +96,7 @@ module OSDN
92
96
  logger.fatal "Command failed by ApiError: #{e.response_body}"
93
97
  end
94
98
  rescue
95
- logger.fatal "Command failed: #{e.inspect}"
99
+ logger.fatal "Command failed: #{e.inspect} #{e.message} (#{e.code}): #{e.response_body} #{e.response_headers}"
96
100
  end
97
101
  end
98
102
  end
@@ -1,5 +1,5 @@
1
1
  module OSDN
2
2
  module CLI
3
- VERSION = "0.1.5"
3
+ VERSION = "0.1.6"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: osdn-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - OSDN
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-20 00:00:00.000000000 Z
11
+ date: 2016-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler