drone-builds 0.4.2 → 0.5.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: b24969d066869cf37e383d5acd18a67857288c61
4
- data.tar.gz: 5767033a6359544991a6fd5ae48adb2aab1a3071
3
+ metadata.gz: 9b85ca4c703cc852436c2bac78064a995fe60629
4
+ data.tar.gz: 8726b4e18acbdefb8e3d7993ac6b8a049b39b5cd
5
5
  SHA512:
6
- metadata.gz: 941e95027f96e9312664f68e3153bdb52b0eee08b6489636f14ba8243227c0f968201852cceb376746d321611aab4b87be201f763bfb0e76385b40735f15bd08
7
- data.tar.gz: a7b8c3e88e588656eac91071311ab5f6333e497ea51166364d2da7a03303bf05ea23d2985c5fdc6beb77fafc994f33b036bff6a3db44115d00a2e59148fd057c
6
+ metadata.gz: b4593727c980993a85c3aed7c05cce59f305ed4cdeee86a0c9b9ef328f42e222935f505aee1988fcfe5407afe7f4facb9aeb7eba6d1365bc5407d85c746611b6
7
+ data.tar.gz: 3e676b7ae5a4e03a1e1b0bb0930765f2961472c9b5fa01348602c0a31ae343f538fdce892cfbdeb57e0f9062bb2130cfe2d76cad13e053f7b022b0a1041173ca
data/README.md CHANGED
@@ -25,7 +25,9 @@ DRONE_NAME=repo-name
25
25
  ```
26
26
  drone-builds commands:
27
27
  drone-builds help [COMMAND] # Describe available commands or one specific command
28
+ drone-builds kill # kill a build
28
29
  drone-builds list # list last builds
30
+ drone-builds restart # restart a build
29
31
  drone-builds show # show a build
30
32
  drone-builds version # version used
31
33
  ```
data/drone-builds.gemspec CHANGED
@@ -30,4 +30,5 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency 'bundler', '~> 1'
31
31
  spec.add_development_dependency 'rake', '~> 12'
32
32
  spec.add_development_dependency 'rspec', '~> 3'
33
+ spec.add_development_dependency 'pry', '~> 0'
33
34
  end
@@ -11,6 +11,8 @@ class Drone::Builds::Cli < Thor
11
11
  map 'l' => :list
12
12
  map 's' => :show
13
13
  map 'v' => :version
14
+ map 'r' => :restart
15
+ map 'k' => :kill
14
16
 
15
17
  desc 'list', 'list last builds'
16
18
  method_option :limit, type: :numeric, default: LIMIT, aliases: '-l', desc: 'number of builds shown'
@@ -44,6 +46,16 @@ class Drone::Builds::Cli < Thor
44
46
  end
45
47
  end
46
48
 
49
+ desc 'restart', 'restart a build'
50
+ def restart(id = nil)
51
+ puts self.class.client.restart(id)
52
+ end
53
+
54
+ desc 'kill', 'kill a build'
55
+ def kill(id = nil)
56
+ puts self.class.client.kill(id)
57
+ end
58
+
47
59
  desc 'version', 'version used'
48
60
  def version
49
61
  puts Drone::Builds::VERSION
@@ -1,5 +1,5 @@
1
1
  module Drone
2
2
  class Builds
3
- VERSION = '0.4.2'.freeze
3
+ VERSION = '0.5.0'.freeze
4
4
  end
5
5
  end
data/lib/drone/builds.rb CHANGED
@@ -34,6 +34,14 @@ module Drone
34
34
  end
35
35
  end
36
36
 
37
+ def kill(id)
38
+ delete_api(job_url(id))
39
+ end
40
+
41
+ def restart(id)
42
+ post_api(build_url(id))
43
+ end
44
+
37
45
  private
38
46
 
39
47
  def base_url
@@ -48,6 +56,14 @@ module Drone
48
56
  "#{base_url}/repos/#{owner}/#{name}/logs/#{id}/#{job_id}"
49
57
  end
50
58
 
59
+ def build_url(id)
60
+ "#{base_url}/repos/#{owner}/#{name}/builds/#{id}"
61
+ end
62
+
63
+ def job_url(id)
64
+ "#{base_url}/repos/#{owner}/#{name}/builds/#{id}/#{job_id}"
65
+ end
66
+
51
67
  def stream_url(id)
52
68
  "#{base_url}/stream/#{owner}/#{name}/#{id}/#{job_id}"
53
69
  end
@@ -56,6 +72,14 @@ module Drone
56
72
  "?access_token=#{token}"
57
73
  end
58
74
 
75
+ def access_token_args
76
+ "access_token=#{token}"
77
+ end
78
+
79
+ def access_token_hash
80
+ { access_token: token }
81
+ end
82
+
59
83
  def full_url(url)
60
84
  "#{url}#{access_token_param}"
61
85
  end
@@ -80,6 +104,14 @@ module Drone
80
104
  open(full_url(url)).read
81
105
  end
82
106
 
107
+ def post_api(url)
108
+ parse_response(Net::HTTP.new(URI(url).host).post(URI(url).path + access_token_param, ""))
109
+ end
110
+
111
+ def delete_api(url)
112
+ parse_response(Net::HTTP.new(URI(url).host).delete(URI(url).path + access_token_param))
113
+ end
114
+
83
115
  def clean_stream_data(data)
84
116
  lines = data.lines.grep(/^data:/).map { |l| l.gsub(/^data:/, '') }
85
117
  lines.map(&:strip).compact.join("\n")
@@ -100,5 +132,14 @@ module Drone
100
132
  false
101
133
  end
102
134
  end
135
+
136
+
137
+ def parse_response(response)
138
+ if response.code[0] == "2" # 200 / 202 / ?
139
+ "#{response.code}: #{response.message}"
140
+ else
141
+ "#{response.code}: #{response.body}"
142
+ end
143
+ end
103
144
  end
104
145
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drone-builds
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dorian Marié
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-26 00:00:00.000000000 Z
11
+ date: 2017-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '3'
125
+ - !ruby/object:Gem::Dependency
126
+ name: pry
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  description: List builds, print realtime output, view previous outputs, filter outputs
126
140
  email:
127
141
  - dorian@doma.io