aptible-cli 0.20.0 → 0.22.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 +4 -4
- data/.github/workflows/test.yml +50 -0
- data/Gemfile +0 -4
- data/Gemfile.lock +17 -22
- data/README.md +9 -6
- data/aptible-cli.gemspec +12 -9
- data/lib/aptible/cli/helpers/database.rb +3 -1
- data/lib/aptible/cli/subcommands/apps.rb +6 -1
- data/lib/aptible/cli/subcommands/backup.rb +7 -1
- data/lib/aptible/cli/subcommands/backup_retention_policy.rb +42 -9
- data/lib/aptible/cli/subcommands/db.rb +23 -5
- data/lib/aptible/cli/subcommands/deploy.rb +15 -2
- data/lib/aptible/cli/subcommands/endpoints.rb +31 -1
- data/lib/aptible/cli/subcommands/services.rb +23 -0
- data/lib/aptible/cli/version.rb +1 -1
- data/spec/aptible/cli/subcommands/backup_retention_policy_spec.rb +115 -0
- data/spec/aptible/cli/subcommands/backup_spec.rb +15 -0
- data/spec/aptible/cli/subcommands/db_spec.rb +14 -0
- data/spec/aptible/cli/subcommands/deploy_spec.rb +21 -0
- data/spec/aptible/cli/subcommands/endpoints_spec.rb +38 -0
- data/spec/aptible/cli/subcommands/services_spec.rb +61 -28
- data/spec/fabricators/account_fabricator.rb +1 -0
- data/spec/fabricators/backup_retention_policy_fabricator.rb +18 -0
- metadata +92 -46
- data/.travis.yml +0 -20
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Aptible::CLI::Agent do
|
4
|
+
let(:token) { 'some-token' }
|
5
|
+
let(:account) { Fabricate(:account, handle: 'test') }
|
6
|
+
let(:database) { Fabricate(:database, account: account, handle: 'some-db') }
|
7
|
+
let!(:policy) do
|
8
|
+
# created_at: 2016-06-14 13:24:11 +0000
|
9
|
+
Fabricate(:backup_retention_policy, account: account)
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:default_handle) { 'some-db-at-2016-06-14-13-24-11' }
|
13
|
+
|
14
|
+
before do
|
15
|
+
allow(subject).to receive(:fetch_token).and_return(token)
|
16
|
+
allow(Aptible::Api::Account).to receive(:all) { [account] }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#backup_retention_policy' do
|
20
|
+
it 'raises an error if the environment has no policy' do
|
21
|
+
allow(account).to receive(:backup_retention_policies).and_return([])
|
22
|
+
expect { subject.backup_retention_policy('test') }
|
23
|
+
.to raise_error(/does not have a custom backup retention policy/)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "prints the enviroment's current policy" do
|
27
|
+
subject.backup_retention_policy('test')
|
28
|
+
out = captured_output_text
|
29
|
+
expect(out).to match(/daily: 30/i)
|
30
|
+
expect(out).to match(/monthly: 12/i)
|
31
|
+
expect(out).to match(/yearly: 6/i)
|
32
|
+
expect(out).to match(/make copy: true/i)
|
33
|
+
expect(out).to match(/keep final: true/i)
|
34
|
+
expect(out).to match(/environment: test/i)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#backup_retention_policy:set' do
|
39
|
+
it 'requires all attributes if the environment has no policy' do
|
40
|
+
allow(account).to receive(:backup_retention_policies).and_return([])
|
41
|
+
opts = {
|
42
|
+
daily: 3,
|
43
|
+
monthly: 2,
|
44
|
+
yearly: 1,
|
45
|
+
make_copy: false,
|
46
|
+
keep_final: true
|
47
|
+
}
|
48
|
+
|
49
|
+
opts.each_key do |k|
|
50
|
+
missing_opts = opts.clone
|
51
|
+
missing_opts.delete(k)
|
52
|
+
|
53
|
+
subject.options = missing_opts
|
54
|
+
expect { subject.send('backup_retention_policy:set', 'test') }
|
55
|
+
.to raise_error(/please specify all attributes/i)
|
56
|
+
end
|
57
|
+
|
58
|
+
expect(account).to receive(:create_backup_retention_policy!)
|
59
|
+
.with(**opts).and_return(Fabricate(:backup_retention_policy))
|
60
|
+
subject.options = opts
|
61
|
+
subject.send('backup_retention_policy:set', 'test')
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'merges provided options with the current policy' do
|
65
|
+
expected_opts = {
|
66
|
+
daily: 5,
|
67
|
+
monthly: policy.monthly,
|
68
|
+
yearly: policy.yearly,
|
69
|
+
make_copy: policy.make_copy,
|
70
|
+
keep_final: false
|
71
|
+
}
|
72
|
+
|
73
|
+
expect(account).to receive(:create_backup_retention_policy!)
|
74
|
+
.with(**expected_opts).and_return(Fabricate(:backup_retention_policy))
|
75
|
+
subject.options = { daily: 5, keep_final: false, force: true }
|
76
|
+
subject.send('backup_retention_policy:set', 'test')
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'prompts the user if the new policy retains fewer backups' do
|
80
|
+
subject.options = { daily: 0 }
|
81
|
+
|
82
|
+
# Reject Prompt
|
83
|
+
expect(subject).to receive(:yes?).with(/do you want to proceed/i)
|
84
|
+
|
85
|
+
expect { subject.send('backup_retention_policy:set', 'test') }
|
86
|
+
.to raise_error(/aborting/i)
|
87
|
+
|
88
|
+
# Accept Prompt
|
89
|
+
expect(subject).to receive(:yes?).with(/do you want to proceed/i)
|
90
|
+
.and_return(true)
|
91
|
+
|
92
|
+
expect(account).to receive(:create_backup_retention_policy!)
|
93
|
+
.and_return(Fabricate(:backup_retention_policy))
|
94
|
+
|
95
|
+
subject.send('backup_retention_policy:set', 'test')
|
96
|
+
end
|
97
|
+
|
98
|
+
it '--force skips the confirmation promt' do
|
99
|
+
subject.options = { make_copy: false }
|
100
|
+
|
101
|
+
# Reject Prompt
|
102
|
+
expect(subject).to receive(:yes?).with(/do you want to proceed/i)
|
103
|
+
|
104
|
+
expect { subject.send('backup_retention_policy:set', 'test') }
|
105
|
+
.to raise_error(/aborting/i)
|
106
|
+
|
107
|
+
# --force
|
108
|
+
subject.options[:force] = true
|
109
|
+
expect(account).to receive(:create_backup_retention_policy!)
|
110
|
+
.and_return(Fabricate(:backup_retention_policy))
|
111
|
+
|
112
|
+
subject.send('backup_retention_policy:set', 'test')
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
@@ -116,6 +116,21 @@ describe Aptible::CLI::Agent do
|
|
116
116
|
subject.send('backup:restore', 1)
|
117
117
|
end
|
118
118
|
|
119
|
+
it 'accept scaling options' do
|
120
|
+
expect(backup).to receive(:create_operation!) do |options|
|
121
|
+
expect(options[:instance_profile]).to eq('m5')
|
122
|
+
expect(options[:provisioned_iops]).to eq(4000)
|
123
|
+
op
|
124
|
+
end
|
125
|
+
|
126
|
+
expect(subject).to receive(:attach_to_operation_logs).with(op) do
|
127
|
+
Fabricate(:database, account: account, handle: default_handle)
|
128
|
+
end
|
129
|
+
|
130
|
+
subject.options = { container_profile: 'm5', iops: 4000 }
|
131
|
+
subject.send('backup:restore', 1)
|
132
|
+
end
|
133
|
+
|
119
134
|
it 'accepts an destination environment' do
|
120
135
|
expect(backup).to receive(:create_operation!) do |options|
|
121
136
|
expect(options[:handle]).to be_present
|
@@ -70,6 +70,20 @@ describe Aptible::CLI::Agent do
|
|
70
70
|
subject.send('db:create', 'foo')
|
71
71
|
end
|
72
72
|
|
73
|
+
it 'creates a new DB with container profile and iops' do
|
74
|
+
expect_provision_database(
|
75
|
+
{ handle: 'foo', type: 'postgresql' },
|
76
|
+
{ instance_profile: 'm5', provisioned_iops: 4000 }
|
77
|
+
)
|
78
|
+
|
79
|
+
subject.options = {
|
80
|
+
type: 'postgresql',
|
81
|
+
container_profile: 'm5',
|
82
|
+
iops: 4000
|
83
|
+
}
|
84
|
+
subject.send('db:create', 'foo')
|
85
|
+
end
|
86
|
+
|
73
87
|
it 'deprovisions the database if the operation cannot be created' do
|
74
88
|
db = Fabricate(:database)
|
75
89
|
|
@@ -160,6 +160,27 @@ describe Aptible::CLI::Agent do
|
|
160
160
|
expect { subject.deploy }
|
161
161
|
.to raise_error(/either from git.*docker/im)
|
162
162
|
end
|
163
|
+
|
164
|
+
it 'allows providing scaling options' do
|
165
|
+
stub_options(
|
166
|
+
container_profile: 'm5',
|
167
|
+
container_size: 1024,
|
168
|
+
container_count: 2
|
169
|
+
)
|
170
|
+
|
171
|
+
expect(app).to receive(:create_operation!)
|
172
|
+
.with(
|
173
|
+
type: 'deploy',
|
174
|
+
container_size: 1024,
|
175
|
+
instance_profile: 'm5',
|
176
|
+
container_count: 2
|
177
|
+
)
|
178
|
+
.and_return(operation)
|
179
|
+
expect(subject).to receive(:attach_to_operation_logs)
|
180
|
+
.with(operation)
|
181
|
+
|
182
|
+
subject.deploy
|
183
|
+
end
|
163
184
|
end
|
164
185
|
end
|
165
186
|
end
|
@@ -452,6 +452,30 @@ describe Aptible::CLI::Agent do
|
|
452
452
|
end
|
453
453
|
end
|
454
454
|
|
455
|
+
describe 'endpoints:grpc:create' do
|
456
|
+
m = 'endpoints:grpc:create'
|
457
|
+
include_examples 'shared create app vhost examples', m
|
458
|
+
include_examples 'shared create tls vhost examples', m
|
459
|
+
|
460
|
+
it 'creates a gRPC Endpoint' do
|
461
|
+
expect_create_vhost(
|
462
|
+
service,
|
463
|
+
type: 'grpc',
|
464
|
+
platform: 'elb',
|
465
|
+
internal: false,
|
466
|
+
default: false,
|
467
|
+
ip_whitelist: []
|
468
|
+
)
|
469
|
+
subject.send(m, 'web')
|
470
|
+
end
|
471
|
+
|
472
|
+
it 'creates an Endpoint with a container Port' do
|
473
|
+
expect_create_vhost(service, container_port: 10)
|
474
|
+
stub_options(port: 10)
|
475
|
+
subject.send(m, 'web')
|
476
|
+
end
|
477
|
+
end
|
478
|
+
|
455
479
|
shared_examples 'shared modify app vhost examples' do |m|
|
456
480
|
it 'does not change anything if no options are passed' do
|
457
481
|
v = Fabricate(:vhost, service: service)
|
@@ -579,6 +603,20 @@ describe Aptible::CLI::Agent do
|
|
579
603
|
end
|
580
604
|
end
|
581
605
|
|
606
|
+
describe 'endpoints:grpc:modify' do
|
607
|
+
m = 'endpoints:grpc:modify'
|
608
|
+
include_examples 'shared modify app vhost examples', m
|
609
|
+
include_examples 'shared modify tls vhost examples', m
|
610
|
+
|
611
|
+
it 'allows updating the Container Port' do
|
612
|
+
v = Fabricate(:vhost, service: service)
|
613
|
+
expect_modify_vhost(v, container_port: 10)
|
614
|
+
|
615
|
+
stub_options(port: 10)
|
616
|
+
subject.send(m, v.external_host)
|
617
|
+
end
|
618
|
+
end
|
619
|
+
|
582
620
|
describe 'endpoints:list' do
|
583
621
|
it 'lists Endpoints across services' do
|
584
622
|
s1 = Fabricate(:service, app: app)
|
@@ -8,45 +8,78 @@ describe Aptible::CLI::Agent do
|
|
8
8
|
allow(subject).to receive(:fetch_token) { token }
|
9
9
|
allow(Aptible::Api::App).to receive(:all).with(token: token)
|
10
10
|
.and_return([app])
|
11
|
-
allow(subject).to receive(:options).and_return(app: app.handle)
|
12
11
|
end
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
describe '#services' do
|
14
|
+
before do
|
15
|
+
allow(subject).to receive(:options).and_return(app: app.handle)
|
16
|
+
end
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
it 'lists a CMD service' do
|
19
|
+
Fabricate(:service, app: app, process_type: 'cmd', command: nil)
|
20
|
+
subject.send('services')
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
expect(captured_output_text.split("\n")).to include('Service: cmd')
|
23
|
+
expect(captured_output_text.split("\n")).to include('Command: CMD')
|
24
|
+
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
it 'lists a service with command' do
|
27
|
+
Fabricate(:service, app: app, process_type: 'cmd', command: 'foobar')
|
28
|
+
subject.send('services')
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
expect(captured_output_text.split("\n")).to include('Service: cmd')
|
31
|
+
expect(captured_output_text.split("\n")).to include('Command: foobar')
|
32
|
+
end
|
33
33
|
|
34
|
-
|
35
|
-
|
34
|
+
it 'lists container size' do
|
35
|
+
Fabricate(:service, app: app, container_memory_limit_mb: 1024)
|
36
|
+
subject.send('services')
|
37
|
+
|
38
|
+
expect(captured_output_text.split("\n"))
|
39
|
+
.to include('Container Size: 1024')
|
40
|
+
end
|
36
41
|
|
37
|
-
|
38
|
-
|
39
|
-
|
42
|
+
it 'lists container count' do
|
43
|
+
Fabricate(:service, app: app, container_count: 3)
|
44
|
+
subject.send('services')
|
40
45
|
|
41
|
-
|
46
|
+
expect(captured_output_text.split("\n")).to include('Container Count: 3')
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'lists multiple services' do
|
50
|
+
Fabricate(:service, app: app, process_type: 'foo')
|
51
|
+
Fabricate(:service, app: app, process_type: 'bar')
|
52
|
+
subject.send('services')
|
53
|
+
|
54
|
+
expect(captured_output_text.split("\n")).to include('Service: foo')
|
55
|
+
expect(captured_output_text.split("\n")).to include('Service: bar')
|
56
|
+
end
|
42
57
|
end
|
43
58
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
59
|
+
describe '#services:settings' do
|
60
|
+
let(:base_options) { { app: app.handle } }
|
61
|
+
|
62
|
+
it 'allows changing zero_downtime_deployment settings' do
|
63
|
+
stub_options(force_zero_downtime: true, simple_health_check: true)
|
64
|
+
service = Fabricate(:service, app: app, process_type: 'foo')
|
65
|
+
|
66
|
+
expect(service).to receive(:update!)
|
67
|
+
.with(force_zero_downtime: true, naive_health_check: true)
|
68
|
+
|
69
|
+
subject.send('services:settings', 'foo')
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'allows changing only one of the options' do
|
73
|
+
stub_options(simple_health_check: true)
|
74
|
+
service = Fabricate(:service, app: app, process_type: 'foo')
|
75
|
+
|
76
|
+
expect(service).to receive(:update!).with(naive_health_check: true)
|
77
|
+
|
78
|
+
subject.send('services:settings', 'foo')
|
79
|
+
end
|
80
|
+
end
|
48
81
|
|
49
|
-
|
50
|
-
|
82
|
+
def stub_options(**opts)
|
83
|
+
allow(subject).to receive(:options).and_return(base_options.merge(opts))
|
51
84
|
end
|
52
85
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class StubBackupRetentionPolicy < OpenStruct
|
2
|
+
def reload
|
3
|
+
self
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
Fabricator(:backup_retention_policy, from: :stub_backup_retention_policy) do
|
8
|
+
id { sequence(:backup_retention_policy_id) }
|
9
|
+
created_at { Time.now }
|
10
|
+
daily { 30 }
|
11
|
+
monthly { 12 }
|
12
|
+
yearly { 6 }
|
13
|
+
make_copy { true }
|
14
|
+
keep_final { true }
|
15
|
+
account
|
16
|
+
|
17
|
+
after_create { |policy| policy.account.backup_retention_policies << policy }
|
18
|
+
end
|
metadata
CHANGED
@@ -1,57 +1,63 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aptible-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.22.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frank Macreery
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '4.0'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '6.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
29
|
+
version: '4.0'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '6.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: aptible-api
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.5
|
39
|
+
version: 1.6.5
|
34
40
|
type: :runtime
|
35
41
|
prerelease: false
|
36
42
|
version_requirements: !ruby/object:Gem::Requirement
|
37
43
|
requirements:
|
38
44
|
- - "~>"
|
39
45
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.5
|
46
|
+
version: 1.6.5
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: aptible-auth
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
51
|
- - "~>"
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.2.
|
53
|
+
version: 1.2.5
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
58
|
- - "~>"
|
53
59
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.2.
|
60
|
+
version: 1.2.5
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: aptible-billing
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,35 +73,49 @@ dependencies:
|
|
67
73
|
- !ruby/object:Gem::Version
|
68
74
|
version: '1.0'
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
76
|
+
name: aptible-resource
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
72
78
|
requirements:
|
73
79
|
- - "~>"
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
81
|
+
version: '1.1'
|
76
82
|
type: :runtime
|
77
83
|
prerelease: false
|
78
84
|
version_requirements: !ruby/object:Gem::Requirement
|
79
85
|
requirements:
|
80
86
|
- - "~>"
|
81
87
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
88
|
+
version: '1.1'
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
90
|
+
name: aws-sdk
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
86
92
|
requirements:
|
87
|
-
- - "
|
93
|
+
- - "~>"
|
88
94
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
95
|
+
version: '2.0'
|
90
96
|
type: :runtime
|
91
97
|
prerelease: false
|
92
98
|
version_requirements: !ruby/object:Gem::Requirement
|
93
99
|
requirements:
|
94
|
-
- - "
|
100
|
+
- - "~>"
|
95
101
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
102
|
+
version: '2.0'
|
97
103
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
104
|
+
name: bigdecimal
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.3.5
|
110
|
+
type: :runtime
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 1.3.5
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: cbor
|
99
119
|
requirement: !ruby/object:Gem::Requirement
|
100
120
|
requirements:
|
101
121
|
- - ">="
|
@@ -123,67 +143,89 @@ dependencies:
|
|
123
143
|
- !ruby/object:Gem::Version
|
124
144
|
version: 0.10.6
|
125
145
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
146
|
+
name: concurrent-ruby
|
127
147
|
requirement: !ruby/object:Gem::Requirement
|
128
148
|
requirements:
|
129
|
-
- - "
|
149
|
+
- - "<"
|
130
150
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
151
|
+
version: 1.1.10
|
132
152
|
type: :runtime
|
133
153
|
prerelease: false
|
134
154
|
version_requirements: !ruby/object:Gem::Requirement
|
135
155
|
requirements:
|
136
|
-
- - "
|
156
|
+
- - "<"
|
137
157
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
158
|
+
version: 1.1.10
|
139
159
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
160
|
+
name: jwt
|
141
161
|
requirement: !ruby/object:Gem::Requirement
|
142
162
|
requirements:
|
143
163
|
- - "~>"
|
144
164
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
165
|
+
version: 2.3.0
|
146
166
|
type: :runtime
|
147
167
|
prerelease: false
|
148
168
|
version_requirements: !ruby/object:Gem::Requirement
|
149
169
|
requirements:
|
150
170
|
- - "~>"
|
151
171
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
172
|
+
version: 2.3.0
|
153
173
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
174
|
+
name: git
|
175
|
+
requirement: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - "<"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '1.10'
|
180
|
+
type: :runtime
|
181
|
+
prerelease: false
|
182
|
+
version_requirements: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - "<"
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '1.10'
|
187
|
+
- !ruby/object:Gem::Dependency
|
188
|
+
name: rack
|
155
189
|
requirement: !ruby/object:Gem::Requirement
|
156
190
|
requirements:
|
157
191
|
- - "~>"
|
158
192
|
- !ruby/object:Gem::Version
|
159
|
-
version: 1.
|
193
|
+
version: '1.0'
|
160
194
|
type: :runtime
|
161
195
|
prerelease: false
|
162
196
|
version_requirements: !ruby/object:Gem::Requirement
|
163
197
|
requirements:
|
164
198
|
- - "~>"
|
165
199
|
- !ruby/object:Gem::Version
|
166
|
-
version: 1.
|
200
|
+
version: '1.0'
|
167
201
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
202
|
+
name: term-ansicolor
|
169
203
|
requirement: !ruby/object:Gem::Requirement
|
170
204
|
requirements:
|
171
|
-
- - "
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '4.0'
|
174
|
-
- - "<"
|
205
|
+
- - "~>"
|
175
206
|
- !ruby/object:Gem::Version
|
176
|
-
version:
|
207
|
+
version: 1.8.0
|
177
208
|
type: :runtime
|
178
209
|
prerelease: false
|
179
210
|
version_requirements: !ruby/object:Gem::Requirement
|
180
211
|
requirements:
|
181
|
-
- - "
|
212
|
+
- - "~>"
|
182
213
|
- !ruby/object:Gem::Version
|
183
|
-
version:
|
184
|
-
|
214
|
+
version: 1.8.0
|
215
|
+
- !ruby/object:Gem::Dependency
|
216
|
+
name: thor
|
217
|
+
requirement: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - "~>"
|
185
220
|
- !ruby/object:Gem::Version
|
186
|
-
version:
|
221
|
+
version: 0.20.0
|
222
|
+
type: :runtime
|
223
|
+
prerelease: false
|
224
|
+
version_requirements: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - "~>"
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: 0.20.0
|
187
229
|
- !ruby/object:Gem::Dependency
|
188
230
|
name: bundler
|
189
231
|
requirement: !ruby/object:Gem::Requirement
|
@@ -292,9 +334,9 @@ extra_rdoc_files: []
|
|
292
334
|
files:
|
293
335
|
- ".dockerignore"
|
294
336
|
- ".github/CODEOWNERS"
|
337
|
+
- ".github/workflows/test.yml"
|
295
338
|
- ".gitignore"
|
296
339
|
- ".rspec"
|
297
|
-
- ".travis.yml"
|
298
340
|
- Dockerfile
|
299
341
|
- Gemfile
|
300
342
|
- Gemfile.lock
|
@@ -379,6 +421,7 @@ files:
|
|
379
421
|
- spec/aptible/cli/renderer/text_spec.rb
|
380
422
|
- spec/aptible/cli/resource_formatter_spec.rb
|
381
423
|
- spec/aptible/cli/subcommands/apps_spec.rb
|
424
|
+
- spec/aptible/cli/subcommands/backup_retention_policy_spec.rb
|
382
425
|
- spec/aptible/cli/subcommands/backup_spec.rb
|
383
426
|
- spec/aptible/cli/subcommands/config_spec.rb
|
384
427
|
- spec/aptible/cli/subcommands/db_spec.rb
|
@@ -399,6 +442,7 @@ files:
|
|
399
442
|
- spec/fabricators/account_fabricator.rb
|
400
443
|
- spec/fabricators/app_fabricator.rb
|
401
444
|
- spec/fabricators/backup_fabricator.rb
|
445
|
+
- spec/fabricators/backup_retention_policy_fabricator.rb
|
402
446
|
- spec/fabricators/certificate_fabricator.rb
|
403
447
|
- spec/fabricators/configuration_fabricator.rb
|
404
448
|
- spec/fabricators/database_credential_fabricator.rb
|
@@ -427,7 +471,7 @@ homepage: https://github.com/aptible/aptible-cli
|
|
427
471
|
licenses:
|
428
472
|
- MIT
|
429
473
|
metadata: {}
|
430
|
-
post_install_message:
|
474
|
+
post_install_message:
|
431
475
|
rdoc_options: []
|
432
476
|
require_paths:
|
433
477
|
- lib
|
@@ -442,8 +486,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
442
486
|
- !ruby/object:Gem::Version
|
443
487
|
version: '0'
|
444
488
|
requirements: []
|
445
|
-
rubygems_version: 3.
|
446
|
-
signing_key:
|
489
|
+
rubygems_version: 3.1.6
|
490
|
+
signing_key:
|
447
491
|
specification_version: 4
|
448
492
|
summary: Command-line interface for Aptible services
|
449
493
|
test_files:
|
@@ -463,6 +507,7 @@ test_files:
|
|
463
507
|
- spec/aptible/cli/renderer/text_spec.rb
|
464
508
|
- spec/aptible/cli/resource_formatter_spec.rb
|
465
509
|
- spec/aptible/cli/subcommands/apps_spec.rb
|
510
|
+
- spec/aptible/cli/subcommands/backup_retention_policy_spec.rb
|
466
511
|
- spec/aptible/cli/subcommands/backup_spec.rb
|
467
512
|
- spec/aptible/cli/subcommands/config_spec.rb
|
468
513
|
- spec/aptible/cli/subcommands/db_spec.rb
|
@@ -483,6 +528,7 @@ test_files:
|
|
483
528
|
- spec/fabricators/account_fabricator.rb
|
484
529
|
- spec/fabricators/app_fabricator.rb
|
485
530
|
- spec/fabricators/backup_fabricator.rb
|
531
|
+
- spec/fabricators/backup_retention_policy_fabricator.rb
|
486
532
|
- spec/fabricators/certificate_fabricator.rb
|
487
533
|
- spec/fabricators/configuration_fabricator.rb
|
488
534
|
- spec/fabricators/database_credential_fabricator.rb
|