aptible-cli 0.14.1 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -1
  3. data/aptible-cli.gemspec +1 -0
  4. data/bin/aptible +9 -5
  5. data/lib/aptible/cli.rb +36 -0
  6. data/lib/aptible/cli/agent.rb +10 -6
  7. data/lib/aptible/cli/error.rb +6 -0
  8. data/lib/aptible/cli/formatter.rb +21 -0
  9. data/lib/aptible/cli/formatter/grouped_keyed_list.rb +54 -0
  10. data/lib/aptible/cli/formatter/keyed_list.rb +25 -0
  11. data/lib/aptible/cli/formatter/keyed_object.rb +16 -0
  12. data/lib/aptible/cli/formatter/list.rb +33 -0
  13. data/lib/aptible/cli/formatter/node.rb +8 -0
  14. data/lib/aptible/cli/formatter/object.rb +38 -0
  15. data/lib/aptible/cli/formatter/root.rb +46 -0
  16. data/lib/aptible/cli/formatter/value.rb +25 -0
  17. data/lib/aptible/cli/helpers/app.rb +1 -0
  18. data/lib/aptible/cli/helpers/database.rb +22 -6
  19. data/lib/aptible/cli/helpers/operation.rb +3 -2
  20. data/lib/aptible/cli/helpers/tunnel.rb +1 -3
  21. data/lib/aptible/cli/helpers/vhost.rb +9 -46
  22. data/lib/aptible/cli/renderer.rb +26 -0
  23. data/lib/aptible/cli/renderer/base.rb +8 -0
  24. data/lib/aptible/cli/renderer/json.rb +26 -0
  25. data/lib/aptible/cli/renderer/text.rb +99 -0
  26. data/lib/aptible/cli/resource_formatter.rb +136 -0
  27. data/lib/aptible/cli/subcommands/apps.rb +26 -14
  28. data/lib/aptible/cli/subcommands/backup.rb +22 -4
  29. data/lib/aptible/cli/subcommands/config.rb +15 -11
  30. data/lib/aptible/cli/subcommands/db.rb +82 -31
  31. data/lib/aptible/cli/subcommands/deploy.rb +1 -1
  32. data/lib/aptible/cli/subcommands/endpoints.rb +11 -8
  33. data/lib/aptible/cli/subcommands/operation.rb +2 -1
  34. data/lib/aptible/cli/subcommands/rebuild.rb +1 -1
  35. data/lib/aptible/cli/subcommands/restart.rb +1 -1
  36. data/lib/aptible/cli/subcommands/services.rb +8 -9
  37. data/lib/aptible/cli/version.rb +1 -1
  38. data/spec/aptible/cli/agent_spec.rb +11 -14
  39. data/spec/aptible/cli/formatter_spec.rb +4 -0
  40. data/spec/aptible/cli/renderer/json_spec.rb +63 -0
  41. data/spec/aptible/cli/renderer/text_spec.rb +150 -0
  42. data/spec/aptible/cli/resource_formatter_spec.rb +113 -0
  43. data/spec/aptible/cli/subcommands/apps_spec.rb +144 -28
  44. data/spec/aptible/cli/subcommands/backup_spec.rb +37 -16
  45. data/spec/aptible/cli/subcommands/config_spec.rb +95 -0
  46. data/spec/aptible/cli/subcommands/db_spec.rb +185 -93
  47. data/spec/aptible/cli/subcommands/endpoints_spec.rb +10 -8
  48. data/spec/aptible/cli/subcommands/operation_spec.rb +0 -1
  49. data/spec/aptible/cli/subcommands/rebuild_spec.rb +17 -0
  50. data/spec/aptible/cli/subcommands/services_spec.rb +8 -12
  51. data/spec/aptible/cli_spec.rb +31 -0
  52. data/spec/fabricators/account_fabricator.rb +11 -0
  53. data/spec/fabricators/app_fabricator.rb +15 -0
  54. data/spec/fabricators/configuration_fabricator.rb +8 -0
  55. data/spec/fabricators/database_image_fabricator.rb +17 -0
  56. data/spec/fabricators/operation_fabricator.rb +1 -0
  57. data/spec/fabricators/service_fabricator.rb +4 -0
  58. data/spec/spec_helper.rb +63 -1
  59. metadata +55 -4
  60. data/spec/aptible/cli/helpers/vhost_spec.rb +0 -105
@@ -27,7 +27,8 @@ describe Aptible::CLI::Agent do
27
27
  Fabricate(:vhost, service: service, **args).tap do |v|
28
28
  expect_operation(v, 'provision')
29
29
  expect(v).to receive(:reload).and_return(v)
30
- expect(subject).to receive(:explain_vhost).with(service, v)
30
+ expect(Aptible::CLI::ResourceFormatter).to receive(:inject_vhost)
31
+ .with(an_instance_of(Aptible::CLI::Formatter::Object), v, service)
31
32
  end
32
33
  end
33
34
  end
@@ -36,7 +37,10 @@ describe Aptible::CLI::Agent do
36
37
  expect(vhost).to receive(:update!).with(options) do
37
38
  expect_operation(vhost, 'provision')
38
39
  expect(vhost).to receive(:reload).and_return(vhost)
39
- expect(subject).to receive(:explain_vhost).with(vhost.service, vhost)
40
+ expect(Aptible::CLI::ResourceFormatter).to receive(:inject_vhost)
41
+ .with(
42
+ an_instance_of(Aptible::CLI::Formatter::Object), vhost, vhost.service
43
+ )
40
44
  end
41
45
  end
42
46
 
@@ -94,9 +98,6 @@ describe Aptible::CLI::Agent do
94
98
 
95
99
  describe 'endpoints:list' do
96
100
  it 'lists Endpoints' do
97
- lines = []
98
- allow(subject).to receive(:say) { |m| lines << m }
99
-
100
101
  s = Fabricate(:service, database: db)
101
102
  v1 = Fabricate(:vhost, service: s)
102
103
  v2 = Fabricate(:vhost, service: s)
@@ -104,6 +105,8 @@ describe Aptible::CLI::Agent do
104
105
  stub_options(database: db.handle)
105
106
  subject.send('endpoints:list')
106
107
 
108
+ lines = captured_output_text.split("\n")
109
+
107
110
  expect(lines).to include("Hostname: #{v1.external_host}")
108
111
  expect(lines).to include("Hostname: #{v2.external_host}")
109
112
 
@@ -539,9 +542,6 @@ describe Aptible::CLI::Agent do
539
542
 
540
543
  describe 'endpoints:list' do
541
544
  it 'lists Endpoints across services' do
542
- lines = []
543
- allow(subject).to receive(:say) { |m| lines << m }
544
-
545
545
  s1 = Fabricate(:service, app: app)
546
546
  v1 = Fabricate(:vhost, service: s1)
547
547
 
@@ -551,6 +551,8 @@ describe Aptible::CLI::Agent do
551
551
 
552
552
  subject.send('endpoints:list')
553
553
 
554
+ lines = captured_output_text.split("\n")
555
+
554
556
  expect(lines).to include("Hostname: #{v1.external_host}")
555
557
  expect(lines).to include("Hostname: #{v2.external_host}")
556
558
  expect(lines).to include("Hostname: #{v3.external_host}")
@@ -6,7 +6,6 @@ describe Aptible::CLI::Agent do
6
6
 
7
7
  before do
8
8
  allow(subject).to receive(:fetch_token).and_return(token)
9
- allow(subject).to receive(:say) { |m| messages << m }
10
9
  end
11
10
 
12
11
  describe '#operation:cancel' do
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Aptible::CLI::Agent do
4
+ let(:app) { Fabricate(:app) }
5
+ let(:operation) { Fabricate(:operation, resource: app) }
6
+ before { allow(subject).to receive(:ensure_app).and_return(app) }
7
+
8
+ describe '#rebuild' do
9
+ it 'rebuilds the app' do
10
+ expect(app).to receive(:create_operation!)
11
+ .with(type: 'rebuild').and_return(operation)
12
+ expect(subject).to receive(:attach_to_operation_logs).with(operation)
13
+
14
+ subject.send('rebuild')
15
+ end
16
+ end
17
+ end
@@ -4,45 +4,41 @@ describe Aptible::CLI::Agent do
4
4
  let(:token) { double 'token' }
5
5
  let(:app) { Fabricate(:app) }
6
6
 
7
- let(:lines) { [] }
8
-
9
7
  before do
10
8
  allow(subject).to receive(:fetch_token) { token }
11
9
  allow(Aptible::Api::App).to receive(:all).with(token: token)
12
10
  .and_return([app])
13
11
  allow(subject).to receive(:options).and_return(app: app.handle)
14
-
15
- allow(subject).to receive(:say) { |m| lines << m }
16
12
  end
17
13
 
18
14
  it 'lists a CMD service' do
19
15
  Fabricate(:service, app: app, process_type: 'cmd', command: nil)
20
16
  subject.send('services')
21
17
 
22
- expect(lines).to include('Service: cmd')
23
- expect(lines).to include('Command: CMD')
18
+ expect(captured_output_text.split("\n")).to include('Service: cmd')
19
+ expect(captured_output_text.split("\n")).to include('Command: CMD')
24
20
  end
25
21
 
26
22
  it 'lists a service with command' do
27
23
  Fabricate(:service, app: app, process_type: 'cmd', command: 'foobar')
28
24
  subject.send('services')
29
25
 
30
- expect(lines).to include('Service: cmd')
31
- expect(lines).to include('Command: foobar')
26
+ expect(captured_output_text.split("\n")).to include('Service: cmd')
27
+ expect(captured_output_text.split("\n")).to include('Command: foobar')
32
28
  end
33
29
 
34
30
  it 'lists container size' do
35
31
  Fabricate(:service, app: app, container_memory_limit_mb: 1024)
36
32
  subject.send('services')
37
33
 
38
- expect(lines).to include('Container Size: 1024')
34
+ expect(captured_output_text.split("\n")).to include('Container Size: 1024')
39
35
  end
40
36
 
41
37
  it 'lists container count' do
42
38
  Fabricate(:service, app: app, container_count: 3)
43
39
  subject.send('services')
44
40
 
45
- expect(lines).to include('Container Count: 3')
41
+ expect(captured_output_text.split("\n")).to include('Container Count: 3')
46
42
  end
47
43
 
48
44
  it 'lists multiple services' do
@@ -50,7 +46,7 @@ describe Aptible::CLI::Agent do
50
46
  Fabricate(:service, app: app, process_type: 'bar')
51
47
  subject.send('services')
52
48
 
53
- expect(lines).to include('Service: foo')
54
- expect(lines).to include('Service: bar')
49
+ expect(captured_output_text.split("\n")).to include('Service: foo')
50
+ expect(captured_output_text.split("\n")).to include('Service: bar')
55
51
  end
56
52
  end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Aptible::CLI do
4
+ describe described_class::LogFormatter do
5
+ subject do
6
+ Logger.new(File.open(File::NULL, 'w')).tap do |l|
7
+ l.formatter = described_class.new
8
+ end
9
+ end
10
+
11
+ it 'formats DEBUG' do
12
+ subject.debug 'foo'
13
+ end
14
+
15
+ it 'formats INFO' do
16
+ subject.info 'foo'
17
+ end
18
+
19
+ it 'formats WARN' do
20
+ subject.warn 'foo'
21
+ end
22
+
23
+ it 'formats ERROR' do
24
+ subject.error 'foo'
25
+ end
26
+
27
+ it 'formats FATAL' do
28
+ subject.fatal 'foo'
29
+ end
30
+ end
31
+ end
@@ -1,4 +1,14 @@
1
1
  class StubAccount < OpenStruct
2
+ def each_app(&block)
3
+ return enum_for(:each_app) if block.nil?
4
+ apps.each(&block)
5
+ end
6
+
7
+ def each_database(&block)
8
+ return enum_for(:each_database) if block.nil?
9
+ databases.each(&block)
10
+ end
11
+
2
12
  def each_certificate(&block)
3
13
  return enum_for(:each_certificate) if block.nil?
4
14
  certificates.each(&block)
@@ -6,6 +16,7 @@ class StubAccount < OpenStruct
6
16
  end
7
17
 
8
18
  Fabricator(:account, from: :stub_account) do
19
+ id { Fabricate.sequence(:account_id) { |i| i } }
9
20
  bastion_host 'localhost'
10
21
  dumptruck_port 1234
11
22
  handle 'aptible'
@@ -3,17 +3,32 @@ class StubApp < OpenStruct
3
3
  services.map(&:vhosts).flatten
4
4
  end
5
5
 
6
+ def each_vhost(&block)
7
+ return enum_for(:each_vhost) if block.nil?
8
+ vhosts.each(&block)
9
+ end
10
+
6
11
  def each_service(&block)
7
12
  return enum_for(:each_service) if block.nil?
8
13
  services.each(&block)
9
14
  end
15
+
16
+ def each_configuration(&block)
17
+ return enum_for(:each_configuration) if block.nil?
18
+ configurations.each(&block)
19
+ end
10
20
  end
11
21
 
12
22
  Fabricator(:app, from: :stub_app) do
23
+ id { Fabricate.sequence(:app_id) { |i| i } }
13
24
  handle 'hello'
14
25
  status 'provisioned'
26
+ git_repo { Fabricate.sequence(:app_git_repo) { |i| "git://#{i}.git" } }
15
27
  account
16
28
  services { [] }
29
+ configurations { [] }
30
+ current_configuration { nil }
31
+ errors { Aptible::Resource::Errors.new }
17
32
 
18
33
  after_create { |app| app.account.apps << app }
19
34
  end
@@ -0,0 +1,8 @@
1
+ class StubConfiguration < OpenStruct
2
+ end
3
+
4
+ Fabricator(:configuration, from: :stub_configuration) do
5
+ env { {} }
6
+
7
+ after_create { |configuration| app.configurations << configuration }
8
+ end
@@ -0,0 +1,17 @@
1
+ class StubDatabaseImage < OpenStruct
2
+ end
3
+
4
+ Fabricator(:database_image, from: :stub_database_image) do
5
+ type { 'postgresql' }
6
+ version { '9.4' }
7
+
8
+ after_create do |image|
9
+ if image.description.nil?
10
+ image.description = "#{image.type} #{image.version}"
11
+ end
12
+
13
+ if image.docker_repo.nil?
14
+ image.docker_repo = "aptible/#{image.type}:#{image.version}"
15
+ end
16
+ end
17
+ end
@@ -3,4 +3,5 @@ class StubOperation < OpenStruct; end
3
3
  Fabricator(:operation, from: :stub_operation) do
4
4
  status 'queued'
5
5
  resource { Fabricate(:app) }
6
+ errors { Aptible::Resource::Errors.new }
6
7
  end
@@ -8,7 +8,11 @@ end
8
8
  Fabricator(:service, from: :stub_service) do
9
9
  transient :app, :database
10
10
 
11
+ id { Fabricate.sequence(:service_id) { |i| i } }
11
12
  process_type 'web'
13
+ command { nil }
14
+ container_count { 1 }
15
+ container_memory_limit_mb { 512 }
12
16
  vhosts { [] }
13
17
 
14
18
  after_create do |service, transients|
data/spec/spec_helper.rb CHANGED
@@ -19,8 +19,70 @@ end
19
19
  # Require library up front
20
20
  require 'aptible/cli'
21
21
 
22
+ class SpecRenderer < Aptible::CLI::Renderer::Base
23
+ def initialize
24
+ @nodes = []
25
+ end
26
+
27
+ def render(node)
28
+ # For now, we don't support rendering twice, and we probably never need to.
29
+ raise 'Rendered twice!' unless @nodes.empty?
30
+ @nodes << node
31
+ nil
32
+ end
33
+
34
+ def text
35
+ Aptible::CLI::Renderer::Text.new.render(@nodes.first)
36
+ end
37
+
38
+ def json
39
+ JSON.parse(Aptible::CLI::Renderer::Json.new.render(@nodes.first))
40
+ end
41
+
42
+ def text?
43
+ true
44
+ end
45
+
46
+ def json?
47
+ true
48
+ end
49
+ end
50
+
51
+ module SpecHarness
52
+ def reset_spec_harness
53
+ @stream = StringIO.new
54
+ @renderer = SpecRenderer.new
55
+
56
+ logger = Logger.new(@stream)
57
+
58
+ allow(Aptible::CLI).to receive(:logger).and_return(logger)
59
+ allow(Aptible::CLI::Renderer).to receive(:current).and_return(@renderer)
60
+ end
61
+
62
+ def captured_output_text
63
+ @renderer.text
64
+ end
65
+
66
+ def captured_output_json
67
+ @renderer.json
68
+ end
69
+
70
+ def captured_logs
71
+ pos = @stream.pos
72
+
73
+ begin
74
+ @stream.rewind
75
+ @stream.read
76
+ ensure
77
+ @stream.pos = pos
78
+ end
79
+ end
80
+ end
81
+
22
82
  RSpec.configure do |config|
23
- config.before {}
83
+ config.before(:each) { reset_spec_harness }
84
+
85
+ config.include(SpecHarness)
24
86
 
25
87
  # We make the CLI believe it's running in a toolbelt context to avoid running
26
88
  # the toolbelt nag every time it initializes.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aptible-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.1
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frank Macreery
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-24 00:00:00.000000000 Z
11
+ date: 2017-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aptible-resource
@@ -128,6 +128,26 @@ dependencies:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
130
  version: 0.10.6
131
+ - !ruby/object:Gem::Dependency
132
+ name: activesupport
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '4.0'
138
+ - - "<"
139
+ - !ruby/object:Gem::Version
140
+ version: '6.0'
141
+ type: :runtime
142
+ prerelease: false
143
+ version_requirements: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '4.0'
148
+ - - "<"
149
+ - !ruby/object:Gem::Version
150
+ version: '6.0'
131
151
  - !ruby/object:Gem::Dependency
132
152
  name: bundler
133
153
  requirement: !ruby/object:Gem::Requirement
@@ -247,6 +267,16 @@ files:
247
267
  - codecov.yml
248
268
  - lib/aptible/cli.rb
249
269
  - lib/aptible/cli/agent.rb
270
+ - lib/aptible/cli/error.rb
271
+ - lib/aptible/cli/formatter.rb
272
+ - lib/aptible/cli/formatter/grouped_keyed_list.rb
273
+ - lib/aptible/cli/formatter/keyed_list.rb
274
+ - lib/aptible/cli/formatter/keyed_object.rb
275
+ - lib/aptible/cli/formatter/list.rb
276
+ - lib/aptible/cli/formatter/node.rb
277
+ - lib/aptible/cli/formatter/object.rb
278
+ - lib/aptible/cli/formatter/root.rb
279
+ - lib/aptible/cli/formatter/value.rb
250
280
  - lib/aptible/cli/helpers/app.rb
251
281
  - lib/aptible/cli/helpers/app_or_database.rb
252
282
  - lib/aptible/cli/helpers/database.rb
@@ -257,6 +287,11 @@ files:
257
287
  - lib/aptible/cli/helpers/tunnel.rb
258
288
  - lib/aptible/cli/helpers/vhost.rb
259
289
  - lib/aptible/cli/helpers/vhost/option_set_builder.rb
290
+ - lib/aptible/cli/renderer.rb
291
+ - lib/aptible/cli/renderer/base.rb
292
+ - lib/aptible/cli/renderer/json.rb
293
+ - lib/aptible/cli/renderer/text.rb
294
+ - lib/aptible/cli/resource_formatter.rb
260
295
  - lib/aptible/cli/subcommands/apps.rb
261
296
  - lib/aptible/cli/subcommands/backup.rb
262
297
  - lib/aptible/cli/subcommands/config.rb
@@ -275,6 +310,7 @@ files:
275
310
  - lib/aptible/cli/version.rb
276
311
  - script/sync-readme-usage
277
312
  - spec/aptible/cli/agent_spec.rb
313
+ - spec/aptible/cli/formatter_spec.rb
278
314
  - spec/aptible/cli/helpers/git_remote_handle_strategy_spec.rb
279
315
  - spec/aptible/cli/helpers/handle_from_git_remote_spec.rb
280
316
  - spec/aptible/cli/helpers/operation_spec.rb
@@ -282,9 +318,12 @@ files:
282
318
  - spec/aptible/cli/helpers/ssh_spec.rb
283
319
  - spec/aptible/cli/helpers/token_spec.rb
284
320
  - spec/aptible/cli/helpers/tunnel_spec.rb
285
- - spec/aptible/cli/helpers/vhost_spec.rb
321
+ - spec/aptible/cli/renderer/json_spec.rb
322
+ - spec/aptible/cli/renderer/text_spec.rb
323
+ - spec/aptible/cli/resource_formatter_spec.rb
286
324
  - spec/aptible/cli/subcommands/apps_spec.rb
287
325
  - spec/aptible/cli/subcommands/backup_spec.rb
326
+ - spec/aptible/cli/subcommands/config_spec.rb
288
327
  - spec/aptible/cli/subcommands/db_spec.rb
289
328
  - spec/aptible/cli/subcommands/deploy_spec.rb
290
329
  - spec/aptible/cli/subcommands/domains_spec.rb
@@ -292,15 +331,19 @@ files:
292
331
  - spec/aptible/cli/subcommands/inspect_spec.rb
293
332
  - spec/aptible/cli/subcommands/logs_spec.rb
294
333
  - spec/aptible/cli/subcommands/operation_spec.rb
334
+ - spec/aptible/cli/subcommands/rebuild_spec.rb
295
335
  - spec/aptible/cli/subcommands/restart_spec.rb
296
336
  - spec/aptible/cli/subcommands/services_spec.rb
297
337
  - spec/aptible/cli/subcommands/ssh_spec.rb
338
+ - spec/aptible/cli_spec.rb
298
339
  - spec/fabricators/account_fabricator.rb
299
340
  - spec/fabricators/app_fabricator.rb
300
341
  - spec/fabricators/backup_fabricator.rb
301
342
  - spec/fabricators/certificate_fabricator.rb
343
+ - spec/fabricators/configuration_fabricator.rb
302
344
  - spec/fabricators/database_credential_fabricator.rb
303
345
  - spec/fabricators/database_fabricator.rb
346
+ - spec/fabricators/database_image_fabricator.rb
304
347
  - spec/fabricators/operation_fabricator.rb
305
348
  - spec/fabricators/service_fabricator.rb
306
349
  - spec/fabricators/stack_fabricator.rb
@@ -341,6 +384,7 @@ specification_version: 4
341
384
  summary: Command-line interface for Aptible services
342
385
  test_files:
343
386
  - spec/aptible/cli/agent_spec.rb
387
+ - spec/aptible/cli/formatter_spec.rb
344
388
  - spec/aptible/cli/helpers/git_remote_handle_strategy_spec.rb
345
389
  - spec/aptible/cli/helpers/handle_from_git_remote_spec.rb
346
390
  - spec/aptible/cli/helpers/operation_spec.rb
@@ -348,9 +392,12 @@ test_files:
348
392
  - spec/aptible/cli/helpers/ssh_spec.rb
349
393
  - spec/aptible/cli/helpers/token_spec.rb
350
394
  - spec/aptible/cli/helpers/tunnel_spec.rb
351
- - spec/aptible/cli/helpers/vhost_spec.rb
395
+ - spec/aptible/cli/renderer/json_spec.rb
396
+ - spec/aptible/cli/renderer/text_spec.rb
397
+ - spec/aptible/cli/resource_formatter_spec.rb
352
398
  - spec/aptible/cli/subcommands/apps_spec.rb
353
399
  - spec/aptible/cli/subcommands/backup_spec.rb
400
+ - spec/aptible/cli/subcommands/config_spec.rb
354
401
  - spec/aptible/cli/subcommands/db_spec.rb
355
402
  - spec/aptible/cli/subcommands/deploy_spec.rb
356
403
  - spec/aptible/cli/subcommands/domains_spec.rb
@@ -358,15 +405,19 @@ test_files:
358
405
  - spec/aptible/cli/subcommands/inspect_spec.rb
359
406
  - spec/aptible/cli/subcommands/logs_spec.rb
360
407
  - spec/aptible/cli/subcommands/operation_spec.rb
408
+ - spec/aptible/cli/subcommands/rebuild_spec.rb
361
409
  - spec/aptible/cli/subcommands/restart_spec.rb
362
410
  - spec/aptible/cli/subcommands/services_spec.rb
363
411
  - spec/aptible/cli/subcommands/ssh_spec.rb
412
+ - spec/aptible/cli_spec.rb
364
413
  - spec/fabricators/account_fabricator.rb
365
414
  - spec/fabricators/app_fabricator.rb
366
415
  - spec/fabricators/backup_fabricator.rb
367
416
  - spec/fabricators/certificate_fabricator.rb
417
+ - spec/fabricators/configuration_fabricator.rb
368
418
  - spec/fabricators/database_credential_fabricator.rb
369
419
  - spec/fabricators/database_fabricator.rb
420
+ - spec/fabricators/database_image_fabricator.rb
370
421
  - spec/fabricators/operation_fabricator.rb
371
422
  - spec/fabricators/service_fabricator.rb
372
423
  - spec/fabricators/stack_fabricator.rb