travis_dedup 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d34b369ecc247377f7a5126f24d071a1eddb4bfe
4
+ data.tar.gz: 6caec92881d9ba8284beca58cc903f668c2990ac
5
+ SHA512:
6
+ metadata.gz: f7c6b75d5d3c313b52d6602f5d19d97b4a2c0bd48268b23ec47ec679e528bc4956c4d225e73da657efe7c7881db85b95a10f92d3268880ca3591056acd3473dc
7
+ data.tar.gz: 4cece95fb56bcc6ea2229f3eac0485b960bb2c1a7c926e504e8ea26ff56a685f9d2b1a95997d1a8de70f52b22c4b20f6b67c72649af54466192136d55c9f6c3b
@@ -0,0 +1,47 @@
1
+ require 'faraday'
2
+ require 'json'
3
+
4
+ module TravisDedup
5
+ class << self
6
+ attr_accessor :pro
7
+
8
+ def dedup(repo, access_token)
9
+ headers = {
10
+ "Authorization" => %{token "#{access_token}"},
11
+ 'Accept' => 'application/vnd.travis-ci.2+json' # otherwise we only get half the build data
12
+ }
13
+ builds = request(:get, "repos/#{repo}/builds", {}, headers).fetch("builds")
14
+
15
+ seen = []
16
+ builds.select! { |b| ["started", "create"].include?(b.fetch("state")) }
17
+ builds.select do |build|
18
+ pr = build.fetch("pull_request_number")
19
+ id = build.fetch("id")
20
+ if seen.include?(pr)
21
+ puts "Canceling build #{id}"
22
+ request :post, "builds/#{id}/cancel", {}, headers
23
+ true
24
+ else
25
+ seen << pr
26
+ false
27
+ end
28
+ end
29
+ end
30
+
31
+ def access_token(github_token)
32
+ request(:post, "auth/github", github_token: github_token).fetch("access_token")
33
+ end
34
+
35
+ private
36
+
37
+ def host
38
+ pro ? "https://api.travis-ci.com" : "https://api.travis-ci.org"
39
+ end
40
+
41
+ def request(method, path, params, headers={})
42
+ response = Faraday.send(method, "#{host}/#{path}", params, headers)
43
+ raise response.inspect unless [200, 204].include?(response.status)
44
+ JSON.parse(response.body)
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,3 @@
1
+ module TravisDedup
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: travis_dedup
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Michael Grosser
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description:
42
+ email: michael@grosser.it
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/travis_dedup.rb
48
+ - lib/travis_dedup/version.rb
49
+ homepage: https://github.com/grosser/travis_dedup
50
+ licenses:
51
+ - MIT
52
+ metadata: {}
53
+ post_install_message:
54
+ rdoc_options: []
55
+ require_paths:
56
+ - lib
57
+ required_ruby_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 1.9.3
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ requirements: []
68
+ rubyforge_project:
69
+ rubygems_version: 2.2.2
70
+ signing_key:
71
+ specification_version: 4
72
+ summary: Stop all builds on the same PR when a new job starts.
73
+ test_files: []