tugboat 3.1.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -1
- data/CODE_OF_CONDUCT.md +46 -0
- data/lib/tugboat/cli.rb +7 -1
- data/lib/tugboat/config.rb +11 -1
- data/lib/tugboat/middleware.rb +2 -0
- data/lib/tugboat/middleware/ask_for_credentials.rb +2 -1
- data/lib/tugboat/middleware/base.rb +31 -13
- data/lib/tugboat/middleware/check_snapshot_parameters.rb +16 -0
- data/lib/tugboat/middleware/info_droplet.rb +2 -2
- data/lib/tugboat/middleware/inject_client.rb +10 -1
- data/lib/tugboat/middleware/list_droplets.rb +5 -3
- data/lib/tugboat/version.rb +1 -1
- data/spec/cli/add_key_spec.rb +7 -9
- data/spec/cli/authorize_cli_spec.rb +4 -34
- data/spec/cli/config_cli_spec.rb +10 -5
- data/spec/cli/create_cli_spec.rb +20 -17
- data/spec/cli/debug_cli_spec.rb +11 -12
- data/spec/cli/destroy_cli_spec.rb +35 -12
- data/spec/cli/destroy_image_cli_spec.rb +12 -10
- data/spec/cli/droplets_cli_spec.rb +74 -48
- data/spec/cli/env_variable_spec.rb +4 -4
- data/spec/cli/halt_cli_spec.rb +16 -13
- data/spec/cli/help_cli_spec.rb +4 -4
- data/spec/cli/images_cli_spec.rb +9 -7
- data/spec/cli/info_cli_spec.rb +120 -50
- data/spec/cli/info_image_cli_spec.rb +24 -23
- data/spec/cli/keys_cli_spec.rb +3 -3
- data/spec/cli/password_reset_cli_spec.rb +12 -12
- data/spec/cli/rebuild_cli_spec.rb +31 -24
- data/spec/cli/regions_cli_spec.rb +3 -3
- data/spec/cli/resize_cli_spec.rb +16 -16
- data/spec/cli/restart_cli_spec.rb +32 -11
- data/spec/cli/sizes_cli_spec.rb +3 -3
- data/spec/cli/snapshot_cli_spec.rb +25 -9
- data/spec/cli/ssh_cli_spec.rb +10 -10
- data/spec/cli/start_cli_spec.rb +15 -15
- data/spec/cli/verify_cli_spec.rb +4 -7
- data/spec/cli/version_cli_spec.rb +1 -2
- data/spec/cli/wait_cli_spec.rb +16 -16
- data/spec/config_spec.rb +7 -1
- data/spec/fixtures/show_droplets.json +7 -4
- data/spec/fixtures/show_droplets_paginated_first.json +10 -7
- data/spec/fixtures/show_droplets_paginated_last.json +11 -5
- data/spec/fixtures/show_droplets_private_ip.json +7 -4
- data/spec/middleware/base_spec.rb +1 -2
- data/spec/middleware/check_configuration_spec.rb +1 -1
- data/spec/middleware/check_credentials_spec.rb +1 -1
- data/spec/middleware/check_droplet_active_spec.rb +1 -1
- data/spec/middleware/check_droplet_inactive_spec.rb +1 -1
- data/spec/middleware/find_droplet_spec.rb +3 -5
- data/spec/middleware/find_image_spec.rb +3 -5
- data/spec/middleware/ssh_droplet_spec.rb +5 -10
- data/spec/shared/environment.rb +2 -18
- data/tugboat.gemspec +1 -2
- metadata +8 -6
@@ -79,7 +79,8 @@
|
|
79
79
|
"metadata"
|
80
80
|
],
|
81
81
|
"available": null
|
82
|
-
}
|
82
|
+
},
|
83
|
+
"size": {"slug":"512mb","memory":512,"vcpus":1,"disk":20,"transfer":1.0,"price_monthly":5.0,"price_hourly":0.00744,"regions":["ams2","ams3","blr1","fra1","lon1","nyc1","nyc2","nyc3","sfo1","sfo2","sgp1","tor1"],"available":true}
|
83
84
|
},
|
84
85
|
{
|
85
86
|
"id": 3164956,
|
@@ -160,7 +161,8 @@
|
|
160
161
|
"metadata"
|
161
162
|
],
|
162
163
|
"available": null
|
163
|
-
}
|
164
|
+
},
|
165
|
+
"size": {"slug":"512mb","memory":512,"vcpus":1,"disk":20,"transfer":1.0,"price_monthly":5.0,"price_hourly":0.00744,"regions":["ams2","ams3","blr1","fra1","lon1","nyc1","nyc2","nyc3","sfo1","sfo2","sgp1","tor1"],"available":true}
|
164
166
|
},
|
165
167
|
{
|
166
168
|
"id": 3164444,
|
@@ -241,7 +243,8 @@
|
|
241
243
|
"metadata"
|
242
244
|
],
|
243
245
|
"available": null
|
244
|
-
}
|
246
|
+
},
|
247
|
+
"size": {"slug":"512mb","memory":512,"vcpus":1,"disk":20,"transfer":1.0,"price_monthly":5.0,"price_hourly":0.00744,"regions":["ams2","ams3","blr1","fra1","lon1","nyc1","nyc2","nyc3","sfo1","sfo2","sgp1","tor1"],"available":true}
|
245
248
|
}
|
246
249
|
],
|
247
250
|
"links": {
|
@@ -249,4 +252,4 @@
|
|
249
252
|
"meta": {
|
250
253
|
"total": 4
|
251
254
|
}
|
252
|
-
}
|
255
|
+
}
|
@@ -79,7 +79,8 @@
|
|
79
79
|
"metadata"
|
80
80
|
],
|
81
81
|
"available": null
|
82
|
-
}
|
82
|
+
},
|
83
|
+
"size": {"slug":"512mb","memory":512,"vcpus":1,"disk":20,"transfer":1.0,"price_monthly":5.0,"price_hourly":0.00744,"regions":["ams2","ams3","blr1","fra1","lon1","nyc1","nyc2","nyc3","sfo1","sfo2","sgp1","tor1"],"available":true}
|
83
84
|
},
|
84
85
|
{
|
85
86
|
"id": 3164956,
|
@@ -160,9 +161,10 @@
|
|
160
161
|
"metadata"
|
161
162
|
],
|
162
163
|
"available": null
|
163
|
-
}
|
164
|
+
},
|
165
|
+
"size": {"slug":"512mb","memory":512,"vcpus":1,"disk":20,"transfer":1.0,"price_monthly":5.0,"price_hourly":0.00744,"regions":["ams2","ams3","blr1","fra1","lon1","nyc1","nyc2","nyc3","sfo1","sfo2","sgp1","tor1"],"available":true}
|
164
166
|
},
|
165
|
-
|
167
|
+
{
|
166
168
|
"id": 3164444,
|
167
169
|
"name": "page1example3.com",
|
168
170
|
"memory": 512,
|
@@ -241,16 +243,17 @@
|
|
241
243
|
"metadata"
|
242
244
|
],
|
243
245
|
"available": null
|
244
|
-
}
|
246
|
+
},
|
247
|
+
"size": {"slug":"512mb","memory":512,"vcpus":1,"disk":20,"transfer":1.0,"price_monthly":5.0,"price_hourly":0.00744,"regions":["ams2","ams3","blr1","fra1","lon1","nyc1","nyc2","nyc3","sfo1","sfo2","sgp1","tor1"],"available":true}
|
245
248
|
}
|
246
249
|
],
|
247
250
|
"links": {
|
248
251
|
"pages": {
|
249
|
-
"last": "https://api.digitalocean.com/v2/droplets?page=
|
250
|
-
"next": "https://api.digitalocean.com/v2/droplets?page=2&per_page=
|
252
|
+
"last": "https://api.digitalocean.com/v2/droplets?page=1&per_page=3",
|
253
|
+
"next": "https://api.digitalocean.com/v2/droplets?page=2&per_page=3"
|
251
254
|
}
|
252
255
|
},
|
253
256
|
"meta": {
|
254
257
|
"total": 4
|
255
258
|
}
|
256
|
-
}
|
259
|
+
}
|
@@ -79,7 +79,8 @@
|
|
79
79
|
"metadata"
|
80
80
|
],
|
81
81
|
"available": null
|
82
|
-
}
|
82
|
+
},
|
83
|
+
"size": {"slug":"512mb","memory":512,"vcpus":1,"disk":20,"transfer":1.0,"price_monthly":5.0,"price_hourly":0.00744,"regions":["ams2","ams3","blr1","fra1","lon1","nyc1","nyc2","nyc3","sfo1","sfo2","sgp1","tor1"],"available":true}
|
83
84
|
},
|
84
85
|
{
|
85
86
|
"id": 3164956,
|
@@ -160,7 +161,8 @@
|
|
160
161
|
"metadata"
|
161
162
|
],
|
162
163
|
"available": null
|
163
|
-
}
|
164
|
+
},
|
165
|
+
"size": {"slug":"512mb","memory":512,"vcpus":1,"disk":20,"transfer":1.0,"price_monthly":5.0,"price_hourly":0.00744,"regions":["ams2","ams3","blr1","fra1","lon1","nyc1","nyc2","nyc3","sfo1","sfo2","sgp1","tor1"],"available":true}
|
164
166
|
},
|
165
167
|
{
|
166
168
|
"id": 3164444,
|
@@ -241,13 +243,17 @@
|
|
241
243
|
"metadata"
|
242
244
|
],
|
243
245
|
"available": null
|
244
|
-
}
|
246
|
+
},
|
247
|
+
"size": {"slug":"512mb","memory":512,"vcpus":1,"disk":20,"transfer":1.0,"price_monthly":5.0,"price_hourly":0.00744,"regions":["ams2","ams3","blr1","fra1","lon1","nyc1","nyc2","nyc3","sfo1","sfo2","sgp1","tor1"],"available":true}
|
245
248
|
}
|
246
249
|
],
|
247
250
|
"links": {
|
248
|
-
|
251
|
+
"pages": {
|
252
|
+
"last": "https://api.digitalocean.com/v2/droplets?page=2&per_page=3",
|
253
|
+
"next": "https://api.digitalocean.com/v2/droplets?page=2&per_page=3"
|
254
|
+
}
|
249
255
|
},
|
250
256
|
"meta": {
|
251
257
|
"total": 4
|
252
258
|
}
|
253
|
-
}
|
259
|
+
}
|
@@ -85,7 +85,8 @@
|
|
85
85
|
"metadata"
|
86
86
|
],
|
87
87
|
"available": null
|
88
|
-
}
|
88
|
+
},
|
89
|
+
"size": {"slug":"512mb","memory":512,"vcpus":1,"disk":20,"transfer":1.0,"price_monthly":5.0,"price_hourly":0.00744,"regions":["ams2","ams3","blr1","fra1","lon1","nyc1","nyc2","nyc3","sfo1","sfo2","sgp1","tor1"],"available":true}
|
89
90
|
},
|
90
91
|
{
|
91
92
|
"id": 3164956,
|
@@ -166,7 +167,8 @@
|
|
166
167
|
"metadata"
|
167
168
|
],
|
168
169
|
"available": null
|
169
|
-
}
|
170
|
+
},
|
171
|
+
"size": {"slug":"512mb","memory":512,"vcpus":1,"disk":20,"transfer":1.0,"price_monthly":5.0,"price_hourly":0.00744,"regions":["ams2","ams3","blr1","fra1","lon1","nyc1","nyc2","nyc3","sfo1","sfo2","sgp1","tor1"],"available":true}
|
170
172
|
},
|
171
173
|
{
|
172
174
|
"id": 3164444,
|
@@ -247,7 +249,8 @@
|
|
247
249
|
"metadata"
|
248
250
|
],
|
249
251
|
"available": null
|
250
|
-
}
|
252
|
+
},
|
253
|
+
"size": {"slug":"512mb","memory":512,"vcpus":1,"disk":20,"transfer":1.0,"price_monthly":5.0,"price_hourly":0.00744,"regions":["ams2","ams3","blr1","fra1","lon1","nyc1","nyc2","nyc3","sfo1","sfo2","sgp1","tor1"],"available":true}
|
251
254
|
}
|
252
255
|
],
|
253
256
|
"links": {
|
@@ -255,4 +258,4 @@
|
|
255
258
|
"meta": {
|
256
259
|
"total": 4
|
257
260
|
}
|
258
|
-
}
|
261
|
+
}
|
@@ -8,7 +8,7 @@ describe Tugboat::Middleware::CheckConfiguration do
|
|
8
8
|
# Delete the temp configuration file.
|
9
9
|
File.delete(project_path + '/tmp/tugboat')
|
10
10
|
|
11
|
-
expect { described_class.new(app).call(env) }.to raise_error(SystemExit)
|
11
|
+
expect { described_class.new(app).call(env) }.to raise_error(SystemExit).and output(%r{You must run `tugboat authorize` in order to connect to DigitalOcean}).to_stdout
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -12,7 +12,7 @@ describe Tugboat::Middleware::CheckCredentials do
|
|
12
12
|
# Inject the client.
|
13
13
|
env['barge'] = ocean
|
14
14
|
|
15
|
-
expect { described_class.new(app).call(env) }.to raise_error(SystemExit)
|
15
|
+
expect { described_class.new(app).call(env) }.to raise_error(SystemExit).and output(%r{Failed to connect to DigitalOcean. Reason given from API: unauthorized - Unable to authenticate you.}).to_stdout
|
16
16
|
expect(a_request(:get, 'https://api.digitalocean.com/v2/droplets?page=1&per_page=1')).
|
17
17
|
to have_been_made
|
18
18
|
end
|
@@ -7,7 +7,7 @@ describe Tugboat::Middleware::CheckDropletActive do
|
|
7
7
|
it 'raises an error when droplet is not active' do
|
8
8
|
env['droplet_status'] = 'off'
|
9
9
|
|
10
|
-
expect { described_class.new(app).call(env) }.to raise_error(SystemExit)
|
10
|
+
expect { described_class.new(app).call(env) }.to raise_error(SystemExit).and output(%r{Droplet must be on for this operation to be successful.}).to_stdout
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -7,7 +7,7 @@ describe Tugboat::Middleware::CheckDropletInactive do
|
|
7
7
|
it 'raises an error when droplet is active' do
|
8
8
|
env['droplet_status'] = 'active'
|
9
9
|
|
10
|
-
expect { described_class.new(app).call(env) }.to raise_error(SystemExit)
|
10
|
+
expect { described_class.new(app).call(env) }.to raise_error(SystemExit).and output(%r{Droplet must be off for this operation to be successful.}).to_stdout
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -5,11 +5,9 @@ describe Tugboat::Middleware::FindDroplet do
|
|
5
5
|
|
6
6
|
describe '.call' do
|
7
7
|
it 'raises SystemExit with no droplet data' do
|
8
|
-
expect { described_class.new(app).call(env) }.to raise_error(SystemExit)
|
9
|
-
|
10
|
-
expect(
|
11
|
-
expect($stdout.string).to include 'For more help run: '
|
12
|
-
expect($stdout.string).to include 'Try running `tugboat '
|
8
|
+
expect { described_class.new(app).call(env) }.to raise_error(SystemExit).and output(%r{Tugboat attempted to find a droplet with no argument}).to_stdout
|
9
|
+
expect { described_class.new(app).call(env) }.to raise_error(SystemExit).and output(%r{For more help run:}).to_stdout
|
10
|
+
expect { described_class.new(app).call(env) }.to raise_error(SystemExit).and output(%r{Try running `tugboat}).to_stdout
|
13
11
|
end
|
14
12
|
end
|
15
13
|
end
|
@@ -5,11 +5,9 @@ describe Tugboat::Middleware::FindImage do
|
|
5
5
|
|
6
6
|
describe '.call' do
|
7
7
|
it 'raises SystemExit with no image data' do
|
8
|
-
expect { described_class.new(app).call(env) }.to raise_error(SystemExit)
|
9
|
-
|
10
|
-
expect(
|
11
|
-
expect($stdout.string).to include 'For more help run: '
|
12
|
-
expect($stdout.string).to include 'Try running `tugboat '
|
8
|
+
expect { described_class.new(app).call(env) }.to raise_error(SystemExit).and output(%r{Tugboat attempted to find an image with no argument}).to_stdout
|
9
|
+
expect { described_class.new(app).call(env) }.to raise_error(SystemExit).and output(%r{For more help run:}).to_stdout
|
10
|
+
expect { described_class.new(app).call(env) }.to raise_error(SystemExit).and output(%r{Try running `tugboat}).to_stdout
|
13
11
|
end
|
14
12
|
end
|
15
13
|
end
|
@@ -21,7 +21,7 @@ describe Tugboat::Middleware::SSHDroplet do
|
|
21
21
|
env['droplet_ip'] = droplet_ip
|
22
22
|
env['config'] = config
|
23
23
|
|
24
|
-
described_class.new(app).call(env)
|
24
|
+
expect { described_class.new(app).call(env) }.to output(/SShing with options: -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=\/dev\/null -o IdentitiesOnly=yes -i #{File.expand_path(ssh_key_path)} -p 33 baz@33.33.33.10/).to_stdout
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'exec ssh with IdentitiesOnly=no if no ssh_key_path in config' do
|
@@ -39,7 +39,7 @@ describe Tugboat::Middleware::SSHDroplet do
|
|
39
39
|
|
40
40
|
env['config'] = config
|
41
41
|
|
42
|
-
described_class.new(app).call(env)
|
42
|
+
expect { described_class.new(app).call(env) }.to output(/SShing with options: -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=\/dev\/null -o IdentitiesOnly=no -p 33 baz@33.33.33.10/).to_stdout
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'executes ssh with custom options' do
|
@@ -63,7 +63,7 @@ describe Tugboat::Middleware::SSHDroplet do
|
|
63
63
|
env['user_droplet_use_public_ip'] = true
|
64
64
|
env['user_droplet_ssh_opts'] = '-e -q -X'
|
65
65
|
|
66
|
-
described_class.new(app).call(env)
|
66
|
+
expect { described_class.new(app).call(env) }.to output(/SShing with options: -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=\/dev\/null -o IdentitiesOnly=yes -i #{File.expand_path(ssh_key_path)} -p 33 -e -q -X baz@33.33.33.10 echo hello/).to_stdout
|
67
67
|
end
|
68
68
|
|
69
69
|
it 'executes ssh with private IP if option chosen' do
|
@@ -87,7 +87,7 @@ describe Tugboat::Middleware::SSHDroplet do
|
|
87
87
|
env['user_droplet_use_private_ip'] = true
|
88
88
|
env['user_droplet_ssh_opts'] = '-e -q -X'
|
89
89
|
|
90
|
-
described_class.new(app).call(env)
|
90
|
+
expect { described_class.new(app).call(env) }.to output(%r{You did! Using private IP for ssh...}).to_stdout
|
91
91
|
end
|
92
92
|
|
93
93
|
it 'errors if private IP option given but no Private IP on Droplet' do
|
@@ -97,12 +97,7 @@ describe Tugboat::Middleware::SSHDroplet do
|
|
97
97
|
env['user_droplet_use_private_ip'] = true
|
98
98
|
env['user_droplet_ssh_opts'] = '-e -q -X'
|
99
99
|
|
100
|
-
expect { described_class.new(app).call(env) }.to raise_error(SystemExit)
|
101
|
-
|
102
|
-
expect($stdout.string).to eq <<-eos
|
103
|
-
Executing SSH on Droplet ...
|
104
|
-
You asked to ssh to the private IP, but no Private IP found!
|
105
|
-
eos
|
100
|
+
expect { described_class.new(app).call(env) }.to raise_error(SystemExit).and output(%r{You asked to ssh to the private IP, but no Private IP found}).to_stdout
|
106
101
|
end
|
107
102
|
end
|
108
103
|
end
|
data/spec/shared/environment.rb
CHANGED
@@ -20,32 +20,16 @@ shared_context 'spec' do
|
|
20
20
|
let(:private_networking) { 'false' }
|
21
21
|
let(:backups_enabled) { 'false' }
|
22
22
|
let(:ip6) { 'false' }
|
23
|
+
let(:timeout) { '15' }
|
23
24
|
let(:ocean) { Barge::Client.new(access_token: access_token) }
|
24
25
|
let(:app) { ->(env) {} }
|
25
26
|
let(:env) { {} }
|
26
27
|
let(:cli) { Tugboat::CLI.new }
|
27
28
|
|
28
29
|
before do
|
29
|
-
$stdout.sync = true
|
30
|
-
$stderr.sync = true
|
31
|
-
|
32
30
|
# Set a temprary project path and create fake config.
|
33
|
-
config.create_config_file(access_token, ssh_key_path, ssh_user, ssh_port, region, image, size, ssh_key_id, private_networking, backups_enabled, ip6)
|
31
|
+
config.create_config_file(access_token, ssh_key_path, ssh_user, ssh_port, region, image, size, ssh_key_id, private_networking, backups_enabled, ip6, timeout)
|
34
32
|
config.reload!
|
35
|
-
|
36
|
-
# Keep track of the old stderr / out
|
37
|
-
@orig_stderr = $stderr
|
38
|
-
@orig_stdout = $stdout
|
39
|
-
|
40
|
-
# Make them strings so we can manipulate and compare.
|
41
|
-
$stderr = StringIO.new
|
42
|
-
$stdout = StringIO.new
|
43
|
-
end
|
44
|
-
|
45
|
-
after do
|
46
|
-
# Reassign the stderr / out so rspec can have it back.
|
47
|
-
$stderr = @orig_stderr
|
48
|
-
$stdout = @orig_stdout
|
49
33
|
end
|
50
34
|
|
51
35
|
after do
|
data/tugboat.gemspec
CHANGED
@@ -22,8 +22,7 @@ Gem::Specification.new do |gem|
|
|
22
22
|
gem.add_dependency 'barge', '0.12.0'
|
23
23
|
gem.add_dependency 'droplet_kit', '2.2.0'
|
24
24
|
gem.add_dependency 'ibsciss-middleware', '0.4.2'
|
25
|
-
|
26
|
-
gem.add_dependency 'faraday_middleware_safeyaml', '0.12.pre.safeyaml'
|
25
|
+
gem.add_dependency 'faraday_middleware', '0.12.2'
|
27
26
|
gem.add_dependency 'faraday', '0.9.2'
|
28
27
|
gem.add_dependency 'hashie', '3.5.5'
|
29
28
|
gem.add_dependency 'activesupport', '4.2.9'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tugboat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jack Pearkes
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-
|
13
|
+
date: 2017-12-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: thor
|
@@ -69,19 +69,19 @@ dependencies:
|
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: 0.4.2
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
|
-
name:
|
72
|
+
name: faraday_middleware
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
75
|
- - '='
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: 0.12.
|
77
|
+
version: 0.12.2
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
82
|
- - '='
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: 0.12.
|
84
|
+
version: 0.12.2
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: faraday
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
@@ -375,6 +375,7 @@ files:
|
|
375
375
|
- ".travis.yml"
|
376
376
|
- CHANGELOG.md
|
377
377
|
- CHANGELOG_old.md
|
378
|
+
- CODE_OF_CONDUCT.md
|
378
379
|
- CONTRIBUTING.md
|
379
380
|
- Gemfile
|
380
381
|
- LICENSE.md
|
@@ -400,6 +401,7 @@ files:
|
|
400
401
|
- lib/tugboat/middleware/check_credentials.rb
|
401
402
|
- lib/tugboat/middleware/check_droplet_active.rb
|
402
403
|
- lib/tugboat/middleware/check_droplet_inactive.rb
|
404
|
+
- lib/tugboat/middleware/check_snapshot_parameters.rb
|
403
405
|
- lib/tugboat/middleware/config.rb
|
404
406
|
- lib/tugboat/middleware/confirm_action.rb
|
405
407
|
- lib/tugboat/middleware/create_droplet.rb
|
@@ -522,7 +524,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
522
524
|
version: '0'
|
523
525
|
requirements: []
|
524
526
|
rubyforge_project:
|
525
|
-
rubygems_version: 2.
|
527
|
+
rubygems_version: 2.5.1
|
526
528
|
signing_key:
|
527
529
|
specification_version: 4
|
528
530
|
summary: A command line tool for interacting with your DigitalOcean droplets.
|