travis_dedup 0.5.0 → 0.6.0

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: 3f88af9f44b907ec9119b865cfd115512f1920de
4
- data.tar.gz: 0d4e4dc768900f59735ecad2d989014c782a9f2a
3
+ metadata.gz: 4a16be148e31528f8174764a66c9432df37a3c45
4
+ data.tar.gz: d9cbf5d59ddaa85f369acaf90a6c2a4864aa5a06
5
5
  SHA512:
6
- metadata.gz: eeee3dde588968b401dd060eb26ef750280e47bf96607a8d4bed7f56b43cf3461163d559de5e7ea4f85488de4e009e94b0438fe37a510ada58720332f71aa32d
7
- data.tar.gz: 05938a005ee8fe662a720e5a73093a4b2fa57456bbcb01ec6abb02f48dc63c2d514d8c9025c3110c895ea6538236eb258700e0a9ce1634bcfd3a57cc22e881bd
6
+ metadata.gz: 99650998edaf069bdb7e932cfa48813ab8c893862a01ce9169d71243dbe9c267bde6ab1f90b20499e9b5aae08b61c1a99b366114b807bef73c85719c3c722f42
7
+ data.tar.gz: f8c17cabb09465a4a680cb123f9c6df83dafecfc95085cd6bc8f7c9469f92246ee919a8b14061aa0963b92deb645fcd44577ea5f29aefe9f434ac6f8abb7074b
@@ -5,8 +5,11 @@ require 'optparse'
5
5
  module TravisDedup
6
6
  ACTIVE = %w[created started queued]
7
7
 
8
+ RETRY = 3
9
+ class RetryWhen500 < StandardError; end
10
+
8
11
  class << self
9
- attr_accessor :pro, :verbose, :branches
12
+ attr_accessor :pro, :verbose, :branches, :retry_option, :ignore_error_500
10
13
 
11
14
  def cli(argv)
12
15
  parser = OptionParser.new do |opts|
@@ -20,6 +23,8 @@ module TravisDedup
20
23
  BANNER
21
24
  opts.on("--pro", "travis pro") { self.pro = true }
22
25
  opts.on("--branches", "dedup builds on branches too") { self.branches = true }
26
+ opts.on("--retry [COUNT]", Integer, "number of times to retry when Travis returns a 500. #{RETRY} times by default") { |value| self.retry_option = value }
27
+ opts.on("--ignore-error-500", "let the build run when Travis API keeps returning 500") { self.ignore_error_500 = true }
23
28
  opts.on("-h", "--help","Show this") { puts opts; exit }
24
29
  opts.on('-v', '--version','Show Version'){ require 'travis_dedup/version'; puts TravisDedup::VERSION; exit}
25
30
  end
@@ -30,7 +35,11 @@ module TravisDedup
30
35
  return 1
31
36
  end
32
37
 
33
- puts dedup_message(*argv)
38
+ begin
39
+ puts dedup_message(*argv)
40
+ rescue TravisDedup::RetryWhen500 => error
41
+ raise error unless ignore_error_500
42
+ end
34
43
  0
35
44
  end
36
45
 
@@ -98,10 +107,27 @@ module TravisDedup
98
107
  end
99
108
 
100
109
  def request(method, path, params, headers={})
110
+ attempts = 1
111
+ begin
112
+ faraday_send(method, path, params, headers)
113
+ rescue TravisDedup::RetryWhen500 => error
114
+ raise error if (attempts += 1) > max_attempts
115
+ puts "Travis returned an error 500. Retrying ..."
116
+ retry
117
+ end
118
+ end
119
+
120
+ def max_attempts
121
+ retry_option || RETRY
122
+ end
123
+
124
+ def faraday_send(method, path, params, headers={})
101
125
  response = Faraday.send(method, "#{host}/#{path}", params, headers)
102
126
  case response.status
103
127
  when 200 then JSON.parse(response.body)
104
128
  when 204 then nil
129
+ when 500
130
+ raise TravisDedup::RetryWhen500
105
131
  else
106
132
  raise(
107
133
  Faraday::Error,
@@ -110,5 +136,6 @@ module TravisDedup
110
136
  )
111
137
  end
112
138
  end
139
+
113
140
  end
114
141
  end
@@ -1,3 +1,3 @@
1
1
  module TravisDedup
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: travis_dedup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-25 00:00:00.000000000 Z
11
+ date: 2016-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday