tugboat 0.0.3 → 0.0.4

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.
Files changed (42) hide show
  1. data/.gitignore +0 -1
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +6 -4
  4. data/Rakefile +6 -0
  5. data/lib/tugboat/cli.rb +30 -7
  6. data/lib/tugboat/config.rb +16 -8
  7. data/lib/tugboat/middleware.rb +22 -10
  8. data/lib/tugboat/middleware/ask_for_credentials.rb +2 -1
  9. data/lib/tugboat/middleware/check_credentials.rb +1 -1
  10. data/lib/tugboat/middleware/confirm_action.rb +9 -5
  11. data/lib/tugboat/middleware/create_droplet.rb +2 -1
  12. data/lib/tugboat/middleware/find_droplet.rb +2 -2
  13. data/lib/tugboat/middleware/inject_configuration.rb +0 -1
  14. data/lib/tugboat/middleware/list_ssh_keys.rb +18 -0
  15. data/lib/tugboat/middleware/snapshot_droplet.rb +4 -1
  16. data/lib/tugboat/middleware/ssh_droplet.rb +8 -0
  17. data/lib/tugboat/version.rb +1 -1
  18. data/spec/cli/authorize_cli_spec.rb +37 -0
  19. data/spec/cli/create_cli_spec.rb +40 -0
  20. data/spec/cli/destroy_cli_spec.rb +93 -0
  21. data/spec/cli/droplets_cli_spec.rb +28 -0
  22. data/spec/cli/halt_cli_spec.rb +70 -0
  23. data/spec/cli/images_cli_spec.rb +53 -0
  24. data/spec/cli/info_cli_spec.rb +93 -0
  25. data/spec/cli/keys_cli_spec.rb +27 -0
  26. data/spec/cli/restart_cli_spec.rb +70 -0
  27. data/spec/cli/snapshot_cli_spec.rb +75 -0
  28. data/spec/cli/version_cli_spec.rb +20 -0
  29. data/spec/config_spec.rb +8 -15
  30. data/spec/fixtures/create_droplet.json +0 -0
  31. data/spec/fixtures/show_droplet.json +13 -0
  32. data/spec/fixtures/show_droplets.json +35 -0
  33. data/spec/fixtures/show_images.json +15 -0
  34. data/spec/fixtures/show_images_global.json +20 -0
  35. data/spec/fixtures/show_keys.json +13 -0
  36. data/spec/middleware/base_spec.rb +15 -0
  37. data/spec/middleware/inject_configuration_spec.rb +19 -0
  38. data/spec/shared/environment.rb +43 -0
  39. data/spec/spec_helper.rb +7 -0
  40. data/tmp/.gitkeep +0 -0
  41. data/tugboat.gemspec +7 -0
  42. metadata +141 -2
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tugboat::CLI do
4
+ include_context "spec"
5
+
6
+ before :each do
7
+ @cli = Tugboat::CLI.new
8
+ end
9
+
10
+ describe "restarts a droplet" do
11
+ it "with a fuzzy name" do
12
+ stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
13
+ to_return(:status => 200, :body => fixture("show_droplets"))
14
+
15
+ stub_request(:put, "https://api.digitalocean.com/droplets/100823/reboot?api_key=#{api_key}&client_id=#{client_key}").
16
+ to_return(:status => 200, :body => fixture("show_droplet"))
17
+
18
+ @cli.restart("foo")
19
+
20
+ expect($stdout.string).to eq <<-eos
21
+ Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 100823 (foo)
22
+ Queuing restart for 100823 (foo)...done
23
+ eos
24
+
25
+ expect(a_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
26
+ expect(a_request(:put, "https://api.digitalocean.com/droplets/100823/reboot?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
27
+ end
28
+
29
+ it "with an id" do
30
+ stub_request(:get, "https://api.digitalocean.com/droplets/#{droplet_id}?api_key=#{api_key}&client_id=#{client_key}").
31
+ to_return(:status => 200, :body => fixture("show_droplet"))
32
+
33
+ stub_request(:put, "https://api.digitalocean.com/droplets/100823/reboot?api_key=#{api_key}&client_id=#{client_key}").
34
+ to_return(:status => 200, :body => fixture("show_droplet"))
35
+
36
+ @cli.options = @cli.options.merge(:id => droplet_id)
37
+ @cli.restart
38
+
39
+ expect($stdout.string).to eq <<-eos
40
+ Droplet id provided. Finding Droplet...done\e[0m, 100823 (foo)
41
+ Queuing restart for 100823 (foo)...done
42
+ eos
43
+
44
+ expect(a_request(:get, "https://api.digitalocean.com/droplets/#{droplet_id}?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
45
+ expect(a_request(:put, "https://api.digitalocean.com/droplets/100823/reboot?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
46
+ end
47
+
48
+
49
+ it "with a name" do
50
+ stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
51
+ to_return(:status => 200, :body => fixture("show_droplets"))
52
+
53
+ stub_request(:put, "https://api.digitalocean.com/droplets/100823/reboot?api_key=#{api_key}&client_id=#{client_key}").
54
+ to_return(:status => 200, :body => fixture("show_droplet"))
55
+
56
+ @cli.options = @cli.options.merge(:name => droplet_name)
57
+ @cli.restart
58
+
59
+ expect($stdout.string).to eq <<-eos
60
+ Droplet name provided. Finding droplet ID...done\e[0m, 100823 (foo)
61
+ Queuing restart for 100823 (foo)...done
62
+ eos
63
+
64
+ expect(a_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
65
+ expect(a_request(:put, "https://api.digitalocean.com/droplets/100823/reboot?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
66
+ end
67
+
68
+ end
69
+
70
+ end
@@ -0,0 +1,75 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tugboat::CLI do
4
+ include_context "spec"
5
+
6
+ let(:snapshot_name) { "foo-snapshot" }
7
+
8
+ before :each do
9
+ @cli = Tugboat::CLI.new
10
+ end
11
+
12
+ describe "snapshots a droplet" do
13
+ it "with a fuzzy name" do
14
+ stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
15
+ to_return(:status => 200, :body => fixture("show_droplets"))
16
+
17
+ stub_request(:get, "https://api.digitalocean.com/droplets/100823/snapshot?api_key=#{api_key}&client_id=#{client_key}&name=#{snapshot_name}").
18
+ to_return(:status => 200, :body => fixture("show_droplet"))
19
+
20
+ @cli.snapshot(snapshot_name, "foo")
21
+
22
+ expect($stdout.string).to eq <<-eos
23
+ Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 100823 (foo)
24
+ Warning: Droplet must be in a powered off state for snapshot to be successful
25
+ Queuing snapshot 'foo-snapshot' for 100823 (foo)...done
26
+ eos
27
+
28
+ expect(a_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
29
+ expect(a_request(:get, "https://api.digitalocean.com/droplets/100823/snapshot?api_key=#{api_key}&client_id=#{client_key}&name=#{snapshot_name}")).to have_been_made
30
+ end
31
+
32
+ it "with an id" do
33
+ stub_request(:get, "https://api.digitalocean.com/droplets/#{droplet_id}?api_key=#{api_key}&client_id=#{client_key}").
34
+ to_return(:status => 200, :body => fixture("show_droplet"))
35
+
36
+ stub_request(:get, "https://api.digitalocean.com/droplets/100823/snapshot?api_key=#{api_key}&client_id=#{client_key}&name=#{snapshot_name}").
37
+ to_return(:status => 200, :body => fixture("show_droplet"))
38
+
39
+ @cli.options = @cli.options.merge(:id => droplet_id)
40
+ @cli.snapshot(snapshot_name)
41
+
42
+ expect($stdout.string).to eq <<-eos
43
+ Droplet id provided. Finding Droplet...done\e[0m, 100823 (foo)
44
+ Warning: Droplet must be in a powered off state for snapshot to be successful
45
+ Queuing snapshot 'foo-snapshot' for 100823 (foo)...done
46
+ eos
47
+
48
+ expect(a_request(:get, "https://api.digitalocean.com/droplets/#{droplet_id}?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
49
+ expect(a_request(:get, "https://api.digitalocean.com/droplets/100823/snapshot?api_key=#{api_key}&client_id=#{client_key}&name=#{snapshot_name}")).to have_been_made
50
+ end
51
+
52
+
53
+ it "with a name" do
54
+ stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
55
+ to_return(:status => 200, :body => fixture("show_droplets"))
56
+
57
+ stub_request(:get, "https://api.digitalocean.com/droplets/100823/snapshot?api_key=#{api_key}&client_id=#{client_key}&name=#{snapshot_name}").
58
+ to_return(:status => 200, :body => fixture("show_droplet"))
59
+
60
+ @cli.options = @cli.options.merge(:name => droplet_name)
61
+ @cli.snapshot(snapshot_name)
62
+
63
+ expect($stdout.string).to eq <<-eos
64
+ Droplet name provided. Finding droplet ID...done\e[0m, 100823 (foo)
65
+ Warning: Droplet must be in a powered off state for snapshot to be successful
66
+ Queuing snapshot 'foo-snapshot' for 100823 (foo)...done
67
+ eos
68
+
69
+ expect(a_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
70
+ expect(a_request(:get, "https://api.digitalocean.com/droplets/100823/snapshot?api_key=#{api_key}&client_id=#{client_key}&name=#{snapshot_name}")).to have_been_made
71
+ end
72
+
73
+ end
74
+
75
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tugboat::CLI do
4
+ include_context "spec"
5
+
6
+ before :each do
7
+ @cli = Tugboat::CLI.new
8
+ end
9
+
10
+ describe "version" do
11
+ it "shows the correct version" do
12
+
13
+ @cli.options = @cli.options.merge(:version => true)
14
+ @cli.version
15
+
16
+ expect($stdout.string.chomp).to eq("Tugboat #{Tugboat::VERSION.to_s}")
17
+ end
18
+ end
19
+ end
20
+
@@ -20,31 +20,19 @@ describe Tugboat::Configuration do
20
20
  expect(config.data).to be
21
21
  end
22
22
 
23
- it "can set a path" do
24
- config = Tugboat::Configuration.instance
25
- config.path = tmp_path
26
- expect(config.path).to equal(tmp_path)
27
- end
28
-
29
- it "properly resets path" do
30
- config = Tugboat::Configuration.instance
31
- config.path = tmp_path
32
- config.reset!
33
- expect(config.path).to eq(File.join(File.expand_path("~"), '.tugboat'))
34
- end
35
-
36
23
  describe "the file" do
37
24
  let(:client_key) { "foo" }
38
25
  let(:api_key) { "bar" }
39
26
  let(:ssh_user) { "baz" }
27
+ let(:ssh_key_path) { "~/.ssh/id_rsa2" }
40
28
  let(:ssh_key_path) { "~/.ssh/id_rsa2.pub" }
29
+ let(:ssh_port) { "22" }
41
30
 
42
31
  let(:config) { config = Tugboat::Configuration.instance }
43
32
 
44
33
  before :each do
45
34
  # Create a temporary file
46
- config.path = tmp_path
47
- config.create_config_file(client_key, api_key, ssh_key_path, ssh_user)
35
+ config.create_config_file(client_key, api_key, ssh_key_path, ssh_user, ssh_port)
48
36
  end
49
37
 
50
38
  it "can be created" do
@@ -86,5 +74,10 @@ describe Tugboat::Configuration do
86
74
  ssh = data["ssh"]
87
75
  expect(ssh).to have_key("ssh_user")
88
76
  end
77
+
78
+ it "should have an ssh port" do
79
+ ssh = data["ssh"]
80
+ expect(ssh).to have_key("ssh_port")
81
+ end
89
82
  end
90
83
  end
File without changes
@@ -0,0 +1,13 @@
1
+ {
2
+ "status": "OK",
3
+ "droplet": {
4
+ "backups_active": null,
5
+ "id": 100823,
6
+ "image_id": 420,
7
+ "name": "foo",
8
+ "ip_address": "33.33.33.10",
9
+ "region_id": 1,
10
+ "size_id": 33,
11
+ "status": "active"
12
+ }
13
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "status": "OK",
3
+ "droplets": [
4
+ {
5
+ "ip_address": "33.33.33.10",
6
+ "backups_active": null,
7
+ "id": 100823,
8
+ "image_id": 420,
9
+ "name": "test222",
10
+ "region_id": 1,
11
+ "size_id": 33,
12
+ "status": "active"
13
+ },
14
+ {
15
+ "ip_address": "33.33.33.10",
16
+ "backups_active": null,
17
+ "id": 100823,
18
+ "image_id": 420,
19
+ "name": "test223",
20
+ "region_id": 1,
21
+ "size_id": 33,
22
+ "status": "active"
23
+ },
24
+ {
25
+ "ip_address": "33.33.33.10",
26
+ "backups_active": null,
27
+ "id": 100823,
28
+ "image_id": 420,
29
+ "name": "foo",
30
+ "region_id": 1,
31
+ "size_id": 33,
32
+ "status": "off"
33
+ }
34
+ ]
35
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "status": "OK",
3
+ "images": [
4
+ {
5
+ "id": 466,
6
+ "name": "NYTD Backup 1-18-2012",
7
+ "distribution": "Ubuntu"
8
+ },
9
+ {
10
+ "id": 478,
11
+ "name": "NLP Final",
12
+ "distribution": "Ubuntu"
13
+ }
14
+ ]
15
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "status": "OK",
3
+ "images": [
4
+ {
5
+ "id": 466,
6
+ "name": "NYTD Backup 1-18-2012",
7
+ "distribution": "Ubuntu"
8
+ },
9
+ {
10
+ "id": 478,
11
+ "name": "NLP Final",
12
+ "distribution": "Ubuntu"
13
+ },
14
+ {
15
+ "id": 479,
16
+ "name": "Global Final",
17
+ "distribution": "Ubuntu"
18
+ }
19
+ ]
20
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "status": "OK",
3
+ "ssh_keys": [
4
+ {
5
+ "id": 10,
6
+ "name": "office-imac"
7
+ },
8
+ {
9
+ "id": 11,
10
+ "name": "macbook-air"
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tugboat::Middleware::Base do
4
+ include_context "spec"
5
+
6
+ let(:klass) { described_class }
7
+
8
+ describe ".initialize" do
9
+ it "prints a clear line" do
10
+ $stdout.should_receive(:print).with("")
11
+ klass.new({})
12
+ end
13
+ end
14
+
15
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tugboat::Middleware::InjectConfiguration do
4
+ include_context "spec"
5
+
6
+ let(:app) { lambda { |env| } }
7
+ let(:env) { {} }
8
+
9
+ describe ".call" do
10
+
11
+ it "loads the configuration into the environment" do
12
+ described_class.new(app).call(env)
13
+
14
+ env["config"].should == config
15
+ end
16
+
17
+ end
18
+
19
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ shared_context "spec" do
4
+ # Default configuration and
5
+ let(:config) { Tugboat::Configuration.instance }
6
+ let(:client_key) { "foo" }
7
+ let(:api_key) { "bar" }
8
+ let(:ssh_user) { "baz" }
9
+ let(:ssh_port) { "22" }
10
+ let(:ssh_key_path) { "~/.ssh/id_rsa2" }
11
+ let(:droplet_name) { "foo" }
12
+ let(:droplet_id) { 1234 }
13
+
14
+
15
+ before(:each) do
16
+ $stdout.sync = true
17
+ $stderr.sync = true
18
+
19
+ # Set a temprary project path and create fake config.
20
+ config.create_config_file(client_key, api_key, ssh_user, ssh_key_path, ssh_port)
21
+ config.reload!
22
+
23
+ # Keep track of the old stderr / out
24
+ @orig_stderr = $stderr
25
+ @orig_stdout = $stdout
26
+
27
+ # Make them strings so we can manipulate and compare.
28
+ $stderr = StringIO.new
29
+ $stdout = StringIO.new
30
+ end
31
+
32
+ after(:each) do
33
+ # Reassign the stderr / out so rspec can have it back.
34
+ $stderr = @orig_stderr
35
+ $stdout = @orig_stdout
36
+ end
37
+
38
+ after(:each) do
39
+ # Delete the temporary configuration file if it exists.
40
+ File.delete(project_path + "/tmp/tugboat") if File.exist?(project_path + "/tmp/tugboat")
41
+ end
42
+
43
+ end
@@ -1,4 +1,6 @@
1
1
  require 'tugboat'
2
+ require 'webmock/rspec'
3
+ require "shared/environment"
2
4
 
3
5
  RSpec.configure do |config|
4
6
  # Pretty tests
@@ -9,3 +11,8 @@ def project_path
9
11
  File.expand_path("../..", __FILE__)
10
12
  end
11
13
 
14
+ def fixture(fixture_name)
15
+ File.new(project_path + "/spec/fixtures/#{fixture_name}.json")
16
+ end
17
+
18
+ ENV["TUGBOAT_CONFIG_PATH"] = project_path + "/tmp/tugboat"
File without changes
@@ -20,4 +20,11 @@ Gem::Specification.new do |gem|
20
20
  gem.add_dependency "thor", "~> 0.18.1"
21
21
  gem.add_dependency "digital_ocean", "~> 1.0.1"
22
22
  gem.add_dependency "middleware" , "~> 0.1.0"
23
+
24
+ gem.add_development_dependency "rake"
25
+ gem.add_development_dependency "rspec-core", "~> 2.13.0"
26
+ gem.add_development_dependency "rspec-expectations", "~> 2.13.0"
27
+ gem.add_development_dependency "rspec-mocks", "~> 2.13.0"
28
+ gem.add_development_dependency "webmock", "~> 1.11.0"
29
+ gem.add_development_dependency "debugger", "~> 1.5.0"
23
30
  end
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: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-15 00:00:00.000000000 Z
12
+ date: 2013-04-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
@@ -59,6 +59,102 @@ dependencies:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: 0.1.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: rake
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rspec-core
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 2.13.0
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 2.13.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: rspec-expectations
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 2.13.0
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 2.13.0
110
+ - !ruby/object:Gem::Dependency
111
+ name: rspec-mocks
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 2.13.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 2.13.0
126
+ - !ruby/object:Gem::Dependency
127
+ name: webmock
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: 1.11.0
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 1.11.0
142
+ - !ruby/object:Gem::Dependency
143
+ name: debugger
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ~>
148
+ - !ruby/object:Gem::Version
149
+ version: 1.5.0
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ~>
156
+ - !ruby/object:Gem::Version
157
+ version: 1.5.0
62
158
  description: A command line tool for interacting with your DigitalOcean droplets.
63
159
  email:
64
160
  - jackpearkes@gmail.com
@@ -68,6 +164,7 @@ extensions: []
68
164
  extra_rdoc_files: []
69
165
  files:
70
166
  - .gitignore
167
+ - CHANGELOG.md
71
168
  - CONTRIBUTING.md
72
169
  - Gemfile
73
170
  - LICENSE.md
@@ -92,12 +189,34 @@ files:
92
189
  - lib/tugboat/middleware/inject_configuration.rb
93
190
  - lib/tugboat/middleware/list_droplets.rb
94
191
  - lib/tugboat/middleware/list_images.rb
192
+ - lib/tugboat/middleware/list_ssh_keys.rb
95
193
  - lib/tugboat/middleware/restart_droplet.rb
96
194
  - lib/tugboat/middleware/snapshot_droplet.rb
97
195
  - lib/tugboat/middleware/ssh_droplet.rb
98
196
  - lib/tugboat/version.rb
197
+ - spec/cli/authorize_cli_spec.rb
198
+ - spec/cli/create_cli_spec.rb
199
+ - spec/cli/destroy_cli_spec.rb
200
+ - spec/cli/droplets_cli_spec.rb
201
+ - spec/cli/halt_cli_spec.rb
202
+ - spec/cli/images_cli_spec.rb
203
+ - spec/cli/info_cli_spec.rb
204
+ - spec/cli/keys_cli_spec.rb
205
+ - spec/cli/restart_cli_spec.rb
206
+ - spec/cli/snapshot_cli_spec.rb
207
+ - spec/cli/version_cli_spec.rb
99
208
  - spec/config_spec.rb
209
+ - spec/fixtures/create_droplet.json
210
+ - spec/fixtures/show_droplet.json
211
+ - spec/fixtures/show_droplets.json
212
+ - spec/fixtures/show_images.json
213
+ - spec/fixtures/show_images_global.json
214
+ - spec/fixtures/show_keys.json
215
+ - spec/middleware/base_spec.rb
216
+ - spec/middleware/inject_configuration_spec.rb
217
+ - spec/shared/environment.rb
100
218
  - spec/spec_helper.rb
219
+ - tmp/.gitkeep
101
220
  - tugboat.gemspec
102
221
  homepage: https://github.com/pearkes/tugboat
103
222
  licenses: []
@@ -124,5 +243,25 @@ signing_key:
124
243
  specification_version: 3
125
244
  summary: A command line tool for interacting with your DigitalOcean droplets.
126
245
  test_files:
246
+ - spec/cli/authorize_cli_spec.rb
247
+ - spec/cli/create_cli_spec.rb
248
+ - spec/cli/destroy_cli_spec.rb
249
+ - spec/cli/droplets_cli_spec.rb
250
+ - spec/cli/halt_cli_spec.rb
251
+ - spec/cli/images_cli_spec.rb
252
+ - spec/cli/info_cli_spec.rb
253
+ - spec/cli/keys_cli_spec.rb
254
+ - spec/cli/restart_cli_spec.rb
255
+ - spec/cli/snapshot_cli_spec.rb
256
+ - spec/cli/version_cli_spec.rb
127
257
  - spec/config_spec.rb
258
+ - spec/fixtures/create_droplet.json
259
+ - spec/fixtures/show_droplet.json
260
+ - spec/fixtures/show_droplets.json
261
+ - spec/fixtures/show_images.json
262
+ - spec/fixtures/show_images_global.json
263
+ - spec/fixtures/show_keys.json
264
+ - spec/middleware/base_spec.rb
265
+ - spec/middleware/inject_configuration_spec.rb
266
+ - spec/shared/environment.rb
128
267
  - spec/spec_helper.rb