osdn-cli 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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