travis_dedup 0.1.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 +7 -0
- data/lib/travis_dedup.rb +47 -0
- data/lib/travis_dedup/version.rb +3 -0
- metadata +73 -0
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
|
data/lib/travis_dedup.rb
ADDED
@@ -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
|
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: []
|