aptible-cli 0.19.8 → 0.20.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/.dockerignore +20 -0
- data/.gitignore +0 -1
- data/.travis.yml +2 -1
- data/Dockerfile +27 -0
- data/Gemfile.lock +184 -0
- data/Makefile +10 -0
- data/README.md +3 -0
- data/aptible-cli.gemspec +1 -1
- data/docker-compose.yml +10 -0
- data/lib/aptible/cli/agent.rb +2 -0
- data/lib/aptible/cli/resource_formatter.rb +14 -3
- data/lib/aptible/cli/subcommands/backup_retention_policy.rb +92 -0
- data/lib/aptible/cli/subcommands/config.rb +17 -0
- data/lib/aptible/cli/version.rb +1 -1
- data/spec/aptible/cli/subcommands/config_spec.rb +22 -0
- metadata +11 -6
- data/cleanup_bundler +0 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 985fa3322948f2656c41b9b6e7ed378625424554dcf26d1db461386586f488a9
|
|
4
|
+
data.tar.gz: 71150a291daf6e6a054979d6308e9a919654679b88b9581d51959c3100cf9a07
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3551dbb8cff5d22404f022652c70dadf2407f46f11443c84b36eeaa9ba1ec2cb13260d3fd613402c24532e366daf25d9516e19c05a3017f605d5fb8d8a5d5059
|
|
7
|
+
data.tar.gz: 7ef21a787bbb1c81587fd3ad4ef4adee351a10de48d9b80299d8f7f83912a67d1a54c835c856be2b79d93783c6c45e7211d6abb7f5eb7531f80bc834eadbfcf1
|
data/.dockerignore
ADDED
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Dockerfile
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
FROM ruby:2.7.8
|
|
2
|
+
|
|
3
|
+
# Install and use an compatible bundler
|
|
4
|
+
ENV BUNDLER_VERSION=1.17.3
|
|
5
|
+
RUN gem install bundler -v "${BUNDLER_VERSION}"
|
|
6
|
+
|
|
7
|
+
# Install required gems before copying in code
|
|
8
|
+
# to avoid re-installing gems when developing
|
|
9
|
+
WORKDIR /app
|
|
10
|
+
COPY Gemfile /app
|
|
11
|
+
COPY Gemfile.lock /app
|
|
12
|
+
COPY aptible-cli.gemspec /app
|
|
13
|
+
|
|
14
|
+
# We reference the version, so copy that in, too
|
|
15
|
+
CMD mkdir -p /app/lib/aptible/cli/
|
|
16
|
+
COPY lib/aptible/cli/version.rb /app/lib/aptible/cli/
|
|
17
|
+
|
|
18
|
+
RUN bundle install
|
|
19
|
+
|
|
20
|
+
COPY . /app
|
|
21
|
+
|
|
22
|
+
# Save on typing while testing
|
|
23
|
+
RUN echo '#!/bin/bash' > /usr/bin/aptible \
|
|
24
|
+
&& echo 'bundle exec bin/aptible $@' >> /usr/bin/aptible \
|
|
25
|
+
&& chmod +x /usr/bin/aptible
|
|
26
|
+
|
|
27
|
+
CMD ["aptible"]
|
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
GIT
|
|
2
|
+
remote: https://github.com/fancyremarker/pry.git
|
|
3
|
+
revision: be3823aa4ffc51260f2f3ce84f0984da3dc6dd10
|
|
4
|
+
branch: aptible
|
|
5
|
+
specs:
|
|
6
|
+
pry (0.10.0)
|
|
7
|
+
coderay (~> 1.1.0)
|
|
8
|
+
method_source (~> 0.8.1)
|
|
9
|
+
slop (~> 3.4)
|
|
10
|
+
|
|
11
|
+
PATH
|
|
12
|
+
remote: .
|
|
13
|
+
specs:
|
|
14
|
+
aptible-cli (0.20.0)
|
|
15
|
+
activesupport (>= 4.0, < 6.0)
|
|
16
|
+
aptible-api (~> 1.5.3)
|
|
17
|
+
aptible-auth (~> 1.2.4)
|
|
18
|
+
aptible-billing (~> 1.0)
|
|
19
|
+
aptible-resource (~> 1.1)
|
|
20
|
+
aws-sdk (~> 2.0)
|
|
21
|
+
bigdecimal (~> 1.3.5)
|
|
22
|
+
cbor
|
|
23
|
+
chronic_duration (~> 0.10.6)
|
|
24
|
+
git (< 1.10)
|
|
25
|
+
term-ansicolor
|
|
26
|
+
thor (~> 0.20.0)
|
|
27
|
+
|
|
28
|
+
GEM
|
|
29
|
+
remote: https://rubygems.org/
|
|
30
|
+
specs:
|
|
31
|
+
activesupport (4.2.11.3)
|
|
32
|
+
i18n (~> 0.7)
|
|
33
|
+
minitest (~> 5.1)
|
|
34
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
|
35
|
+
tzinfo (~> 1.1)
|
|
36
|
+
addressable (2.8.0)
|
|
37
|
+
public_suffix (>= 2.0.2, < 5.0)
|
|
38
|
+
aptible-api (1.5.3)
|
|
39
|
+
aptible-auth (~> 1.0)
|
|
40
|
+
aptible-resource (~> 1.0)
|
|
41
|
+
gem_config
|
|
42
|
+
multipart-post (< 2.2.0)
|
|
43
|
+
aptible-auth (1.2.5)
|
|
44
|
+
aptible-resource (~> 1.0)
|
|
45
|
+
gem_config
|
|
46
|
+
multipart-post (= 2.1.1)
|
|
47
|
+
oauth2 (= 1.4.7)
|
|
48
|
+
aptible-billing (1.0.1)
|
|
49
|
+
activesupport (>= 4.0, < 6.0)
|
|
50
|
+
aptible-resource (~> 1.0)
|
|
51
|
+
stripe (>= 1.13.0)
|
|
52
|
+
aptible-resource (1.1.2)
|
|
53
|
+
activesupport
|
|
54
|
+
fridge
|
|
55
|
+
gem_config (~> 0.3.1)
|
|
56
|
+
httpclient (~> 2.8)
|
|
57
|
+
json
|
|
58
|
+
uri_template (>= 0.5.2)
|
|
59
|
+
aptible-tasks (0.5.9)
|
|
60
|
+
rake (>= 10, < 13.0)
|
|
61
|
+
rubocop (= 0.42.0)
|
|
62
|
+
ast (2.4.2)
|
|
63
|
+
aws-eventstream (1.1.1)
|
|
64
|
+
aws-sdk (2.11.632)
|
|
65
|
+
aws-sdk-resources (= 2.11.632)
|
|
66
|
+
aws-sdk-core (2.11.632)
|
|
67
|
+
aws-sigv4 (~> 1.0)
|
|
68
|
+
jmespath (~> 1.0)
|
|
69
|
+
aws-sdk-resources (2.11.632)
|
|
70
|
+
aws-sdk-core (= 2.11.632)
|
|
71
|
+
aws-sigv4 (1.2.4)
|
|
72
|
+
aws-eventstream (~> 1, >= 1.0.2)
|
|
73
|
+
bigdecimal (1.3.5)
|
|
74
|
+
cbor (0.5.9.8)
|
|
75
|
+
chronic_duration (0.10.6)
|
|
76
|
+
numerizer (~> 0.1.1)
|
|
77
|
+
climate_control (0.0.3)
|
|
78
|
+
activesupport (>= 3.0)
|
|
79
|
+
coderay (1.1.3)
|
|
80
|
+
concurrent-ruby (1.1.9)
|
|
81
|
+
connection_pool (2.2.3)
|
|
82
|
+
crack (1.0.0)
|
|
83
|
+
bigdecimal
|
|
84
|
+
rexml
|
|
85
|
+
diff-lcs (1.5.1)
|
|
86
|
+
fabrication (2.15.2)
|
|
87
|
+
faraday (0.17.6)
|
|
88
|
+
multipart-post (>= 1.2, < 3)
|
|
89
|
+
fridge (0.2.2)
|
|
90
|
+
gem_config
|
|
91
|
+
jwt
|
|
92
|
+
gem_config (0.3.2)
|
|
93
|
+
git (1.7.0)
|
|
94
|
+
rchardet (~> 1.8)
|
|
95
|
+
hashdiff (1.1.0)
|
|
96
|
+
httpclient (2.8.3)
|
|
97
|
+
i18n (0.9.5)
|
|
98
|
+
concurrent-ruby (~> 1.0)
|
|
99
|
+
jmespath (1.6.2)
|
|
100
|
+
json (2.5.1)
|
|
101
|
+
jwt (2.3.0)
|
|
102
|
+
method_source (0.8.2)
|
|
103
|
+
minitest (5.12.0)
|
|
104
|
+
multi_json (1.15.0)
|
|
105
|
+
multi_xml (0.6.0)
|
|
106
|
+
multipart-post (2.1.1)
|
|
107
|
+
net-http-persistent (3.1.0)
|
|
108
|
+
connection_pool (~> 2.2)
|
|
109
|
+
numerizer (0.1.1)
|
|
110
|
+
oauth2 (1.4.7)
|
|
111
|
+
faraday (>= 0.8, < 2.0)
|
|
112
|
+
jwt (>= 1.0, < 3.0)
|
|
113
|
+
multi_json (~> 1.3)
|
|
114
|
+
multi_xml (~> 0.5)
|
|
115
|
+
rack (>= 1.2, < 3)
|
|
116
|
+
parser (2.7.2.0)
|
|
117
|
+
ast (~> 2.4.1)
|
|
118
|
+
powerpack (0.1.3)
|
|
119
|
+
public_suffix (3.1.1)
|
|
120
|
+
rack (1.6.13)
|
|
121
|
+
rainbow (2.2.2)
|
|
122
|
+
rake
|
|
123
|
+
rake (12.3.3)
|
|
124
|
+
rchardet (1.8.0)
|
|
125
|
+
rexml (3.2.5)
|
|
126
|
+
rspec (3.13.0)
|
|
127
|
+
rspec-core (~> 3.13.0)
|
|
128
|
+
rspec-expectations (~> 3.13.0)
|
|
129
|
+
rspec-mocks (~> 3.13.0)
|
|
130
|
+
rspec-core (3.13.0)
|
|
131
|
+
rspec-support (~> 3.13.0)
|
|
132
|
+
rspec-expectations (3.13.0)
|
|
133
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
134
|
+
rspec-support (~> 3.13.0)
|
|
135
|
+
rspec-mocks (3.13.1)
|
|
136
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
137
|
+
rspec-support (~> 3.13.0)
|
|
138
|
+
rspec-support (3.13.1)
|
|
139
|
+
rubocop (0.42.0)
|
|
140
|
+
parser (>= 2.3.1.1, < 3.0)
|
|
141
|
+
powerpack (~> 0.1)
|
|
142
|
+
rainbow (>= 1.99.1, < 3.0)
|
|
143
|
+
ruby-progressbar (~> 1.7)
|
|
144
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
|
145
|
+
ruby-progressbar (1.13.0)
|
|
146
|
+
slop (3.6.0)
|
|
147
|
+
stripe (4.24.0)
|
|
148
|
+
faraday (~> 0.13)
|
|
149
|
+
net-http-persistent (~> 3.0)
|
|
150
|
+
sync (0.5.0)
|
|
151
|
+
term-ansicolor (1.8.0)
|
|
152
|
+
tins (~> 1.0)
|
|
153
|
+
thor (0.20.3)
|
|
154
|
+
thread_safe (0.3.6)
|
|
155
|
+
tins (1.33.0)
|
|
156
|
+
bigdecimal
|
|
157
|
+
sync
|
|
158
|
+
tzinfo (1.2.11)
|
|
159
|
+
thread_safe (~> 0.1)
|
|
160
|
+
unicode-display_width (1.8.0)
|
|
161
|
+
uri_template (0.7.0)
|
|
162
|
+
webmock (3.16.2)
|
|
163
|
+
addressable (>= 2.8.0)
|
|
164
|
+
crack (>= 0.3.2)
|
|
165
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
|
166
|
+
|
|
167
|
+
PLATFORMS
|
|
168
|
+
ruby
|
|
169
|
+
|
|
170
|
+
DEPENDENCIES
|
|
171
|
+
activesupport (~> 4.0)
|
|
172
|
+
aptible-cli!
|
|
173
|
+
aptible-tasks (~> 0.5.8)
|
|
174
|
+
bundler (~> 1.3)
|
|
175
|
+
climate_control (= 0.0.3)
|
|
176
|
+
fabrication (~> 2.15.2)
|
|
177
|
+
pry!
|
|
178
|
+
rack (~> 1.0)
|
|
179
|
+
rake
|
|
180
|
+
rspec (~> 3.2)
|
|
181
|
+
webmock
|
|
182
|
+
|
|
183
|
+
BUNDLED WITH
|
|
184
|
+
1.17.3
|
data/Makefile
ADDED
data/README.md
CHANGED
|
@@ -35,8 +35,11 @@ Commands:
|
|
|
35
35
|
aptible backup:orphaned # List backups associated with deprovisioned databases
|
|
36
36
|
aptible backup:purge BACKUP_ID # Permanently delete a backup and any copies of it
|
|
37
37
|
aptible backup:restore BACKUP_ID [--environment ENVIRONMENT_HANDLE] [--handle HANDLE] [--container-size SIZE_MB] [--disk-size SIZE_GB] [--key-arn KEY_ARN] # Restore a backup
|
|
38
|
+
aptible backup_retention_policy [ENVIRONMENT_HANDLE] # Show the current backup retention policy for the environment
|
|
39
|
+
aptible backup_retention_policy:set [ENVIRONMENT_HANDLE] [--daily DAILY_BACKUPS] [--monthly MONTHLY_BACKUPS] [--yearly YEARLY_BACKUPS] [--make-copy|--no-make-copy] [--keep-final|--no-keep-final] # Change the environemnt's backup retention policy
|
|
38
40
|
aptible config # Print an app's current configuration
|
|
39
41
|
aptible config:add [VAR1=VAL1] [VAR2=VAL2] [...] # Add an ENV variable to an app
|
|
42
|
+
aptible config:get [VAR1] # Print a specific key within an app's current configuration
|
|
40
43
|
aptible config:rm [VAR1] [VAR2] [...] # Remove an ENV variable from an app
|
|
41
44
|
aptible config:set [VAR1=VAL1] [VAR2=VAL2] [...] # Add an ENV variable to an app
|
|
42
45
|
aptible config:unset [VAR1] [VAR2] [...] # Remove an ENV variable from an app
|
data/aptible-cli.gemspec
CHANGED
|
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.require_paths = ['lib']
|
|
22
22
|
|
|
23
23
|
spec.add_dependency 'aptible-resource', '~> 1.1'
|
|
24
|
-
spec.add_dependency 'aptible-api', '~> 1.
|
|
24
|
+
spec.add_dependency 'aptible-api', '~> 1.5.3'
|
|
25
25
|
spec.add_dependency 'aptible-auth', '~> 1.2.4'
|
|
26
26
|
spec.add_dependency 'aptible-billing', '~> 1.0'
|
|
27
27
|
spec.add_dependency 'thor', '~> 0.20.0'
|
data/docker-compose.yml
ADDED
data/lib/aptible/cli/agent.rb
CHANGED
|
@@ -42,6 +42,7 @@ require_relative 'subcommands/endpoints'
|
|
|
42
42
|
require_relative 'subcommands/log_drain'
|
|
43
43
|
require_relative 'subcommands/metric_drain'
|
|
44
44
|
require_relative 'subcommands/maintenance'
|
|
45
|
+
require_relative 'subcommands/backup_retention_policy'
|
|
45
46
|
|
|
46
47
|
module Aptible
|
|
47
48
|
module CLI
|
|
@@ -70,6 +71,7 @@ module Aptible
|
|
|
70
71
|
include Subcommands::LogDrain
|
|
71
72
|
include Subcommands::MetricDrain
|
|
72
73
|
include Subcommands::Maintenance
|
|
74
|
+
include Subcommands::BackupRetentionPolicy
|
|
73
75
|
|
|
74
76
|
# Forward return codes on failures.
|
|
75
77
|
def self.exit_on_failure?
|
|
@@ -247,10 +247,10 @@ module Aptible
|
|
|
247
247
|
raw_start, raw_end = maintenance_resource.maintenance_deadline
|
|
248
248
|
window_start = utc_string(raw_start)
|
|
249
249
|
window_end = utc_string(raw_end)
|
|
250
|
-
label = "#{maintenance_resource.handle} between #{window_start} "\
|
|
250
|
+
label = "#{maintenance_resource.handle} between #{window_start} " \
|
|
251
251
|
"and #{window_end}"
|
|
252
|
-
restart_command = "#{command_prefix}"\
|
|
253
|
-
" #{maintenance_resource.handle}"\
|
|
252
|
+
restart_command = "#{command_prefix}" \
|
|
253
|
+
" #{maintenance_resource.handle}" \
|
|
254
254
|
" --environment #{account.handle}"
|
|
255
255
|
node.value('label', label)
|
|
256
256
|
node.value('handle', maintenance_resource.handle)
|
|
@@ -259,6 +259,17 @@ module Aptible
|
|
|
259
259
|
attach_account(node, account)
|
|
260
260
|
end
|
|
261
261
|
|
|
262
|
+
def inject_backup_retention_policy(node, policy, account)
|
|
263
|
+
node.value('id', policy.id)
|
|
264
|
+
node.value('daily', policy.daily)
|
|
265
|
+
node.value('monthly', policy.monthly)
|
|
266
|
+
node.value('yearly', policy.yearly)
|
|
267
|
+
node.value('make_copy', policy.make_copy)
|
|
268
|
+
node.value('keep_final', policy.keep_final)
|
|
269
|
+
|
|
270
|
+
attach_account(node, account)
|
|
271
|
+
end
|
|
272
|
+
|
|
262
273
|
private
|
|
263
274
|
|
|
264
275
|
def attach_account(node, account)
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
require 'term/ansicolor'
|
|
2
|
+
require 'uri'
|
|
3
|
+
require 'English'
|
|
4
|
+
|
|
5
|
+
module Aptible
|
|
6
|
+
module CLI
|
|
7
|
+
module Subcommands
|
|
8
|
+
module BackupRetentionPolicy
|
|
9
|
+
def self.included(thor)
|
|
10
|
+
thor.class_eval do
|
|
11
|
+
include Helpers::Environment
|
|
12
|
+
include Term::ANSIColor
|
|
13
|
+
|
|
14
|
+
desc 'backup_retention_policy [ENVIRONMENT_HANDLE]',
|
|
15
|
+
'Show the current backup retention policy for the environment'
|
|
16
|
+
define_method 'backup_retention_policy' do |env|
|
|
17
|
+
account = ensure_environment(environment: env)
|
|
18
|
+
policy = account.backup_retention_policies.first
|
|
19
|
+
unless policy
|
|
20
|
+
raise Thor::Error, "Environment #{env} does not have a " \
|
|
21
|
+
'custom backup retention policy'
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
Formatter.render(Renderer.current) do |root|
|
|
25
|
+
root.object do |node|
|
|
26
|
+
ResourceFormatter.inject_backup_retention_policy(
|
|
27
|
+
node, policy, account
|
|
28
|
+
)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
desc 'backup_retention_policy:set [ENVIRONMENT_HANDLE] ' \
|
|
34
|
+
'[--daily DAILY_BACKUPS] [--monthly MONTHLY_BACKUPS] ' \
|
|
35
|
+
'[--yearly YEARLY_BACKUPS] [--make-copy|--no-make-copy] ' \
|
|
36
|
+
'[--keep-final|--no-keep-final]',
|
|
37
|
+
"Change the environemnt's backup retention policy"
|
|
38
|
+
option :daily, type: :numeric,
|
|
39
|
+
desc: 'Number of daily backups to retain'
|
|
40
|
+
option :monthly, type: :numeric,
|
|
41
|
+
desc: 'Number of monthly backups to retain'
|
|
42
|
+
option :yearly, type: :numeric,
|
|
43
|
+
desc: 'Number of yearly backups to retain'
|
|
44
|
+
option :make_copy, type: :boolean,
|
|
45
|
+
desc: 'If backup copies should be created'
|
|
46
|
+
option(
|
|
47
|
+
:keep_final,
|
|
48
|
+
type: :boolean,
|
|
49
|
+
desc: 'If final backups should be kept when databases are ' \
|
|
50
|
+
'deprovisioned'
|
|
51
|
+
)
|
|
52
|
+
define_method 'backup_retention_policy:set' do |env|
|
|
53
|
+
if options.empty?
|
|
54
|
+
raise Thor::Error,
|
|
55
|
+
'Please specify at least one attribute to change'
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
account = ensure_environment(environment: env)
|
|
59
|
+
current_policy = account.backup_retention_policies.first
|
|
60
|
+
|
|
61
|
+
# If an attribute isn't provided, use the value from the current
|
|
62
|
+
# policy
|
|
63
|
+
attrs = {}
|
|
64
|
+
%i(daily monthly yearly make_copy keep_final).each do |a|
|
|
65
|
+
opt = options[a]
|
|
66
|
+
attrs[a] = opt.nil? ? current_policy.try(a) : opt
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# If any of the attribues are missing, raise an error so that
|
|
70
|
+
# we're not relying on the server's defaults
|
|
71
|
+
if attrs.values.any?(&:nil?)
|
|
72
|
+
raise Thor::Error, "Environemnt #{env} does not have a " \
|
|
73
|
+
'custom backup retention policy. Please ' \
|
|
74
|
+
'specify all attributes to create one.'
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
new_policy = account.create_backup_retention_policy!(**attrs)
|
|
78
|
+
|
|
79
|
+
Formatter.render(Renderer.current) do |root|
|
|
80
|
+
root.object do |node|
|
|
81
|
+
ResourceFormatter.inject_backup_retention_policy(
|
|
82
|
+
node, new_policy.reload, account
|
|
83
|
+
)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
@@ -29,6 +29,23 @@ module Aptible
|
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
+
desc 'config:get [VAR1]',
|
|
33
|
+
"Print a specific key within an app's current configuration"
|
|
34
|
+
app_options
|
|
35
|
+
define_method 'config:get' do |*args|
|
|
36
|
+
app = ensure_app(options)
|
|
37
|
+
config = app.current_configuration
|
|
38
|
+
env = config ? config.env : {}
|
|
39
|
+
|
|
40
|
+
Formatter.render(Renderer.current) do |root|
|
|
41
|
+
key = args[0]
|
|
42
|
+
value = env
|
|
43
|
+
.select { |k| k == key }
|
|
44
|
+
.map { |_, v| v }
|
|
45
|
+
root.value(value)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
32
49
|
desc 'config:add [VAR1=VAL1] [VAR2=VAL2] [...]',
|
|
33
50
|
'Add an ENV variable to an app'
|
|
34
51
|
app_options
|
data/lib/aptible/cli/version.rb
CHANGED
|
@@ -57,6 +57,28 @@ describe Aptible::CLI::Agent do
|
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
+
describe '#config:get' do
|
|
61
|
+
it 'should show single environment variable specified' do
|
|
62
|
+
app.current_configuration = Fabricate(
|
|
63
|
+
:configuration, app: app, env: { 'FOO' => 'BAR', 'QUX' => 'two words' }
|
|
64
|
+
)
|
|
65
|
+
subject.send('config:get', 'FOO')
|
|
66
|
+
|
|
67
|
+
expect(captured_output_text).to match(/BAR/)
|
|
68
|
+
expect(captured_output_text).not_to match(/two\\ words/)
|
|
69
|
+
expect(captured_output_json).to match_array(['BAR'])
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it 'should show empty line when env var not found' do
|
|
73
|
+
app.current_configuration = Fabricate(
|
|
74
|
+
:configuration, app: app, env: { 'FOO' => 'BAR', 'QUX' => 'two words' }
|
|
75
|
+
)
|
|
76
|
+
subject.send('config:get', 'MIZ')
|
|
77
|
+
|
|
78
|
+
expect(captured_output_text).to eq('')
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
60
82
|
describe '#config:set' do
|
|
61
83
|
it 'sets environment variables' do
|
|
62
84
|
expect(app).to receive(:create_operation!)
|
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.
|
|
4
|
+
version: 0.20.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: 2024-
|
|
11
|
+
date: 2024-06-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: aptible-resource
|
|
@@ -30,14 +30,14 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
33
|
+
version: 1.5.3
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
40
|
+
version: 1.5.3
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: aptible-auth
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -290,20 +290,24 @@ executables:
|
|
|
290
290
|
extensions: []
|
|
291
291
|
extra_rdoc_files: []
|
|
292
292
|
files:
|
|
293
|
+
- ".dockerignore"
|
|
293
294
|
- ".github/CODEOWNERS"
|
|
294
295
|
- ".gitignore"
|
|
295
296
|
- ".rspec"
|
|
296
297
|
- ".travis.yml"
|
|
298
|
+
- Dockerfile
|
|
297
299
|
- Gemfile
|
|
300
|
+
- Gemfile.lock
|
|
298
301
|
- LICENSE.md
|
|
302
|
+
- Makefile
|
|
299
303
|
- README.md
|
|
300
304
|
- Rakefile
|
|
301
305
|
- SECURITY.md
|
|
302
306
|
- appveyor.yml
|
|
303
307
|
- aptible-cli.gemspec
|
|
304
308
|
- bin/aptible
|
|
305
|
-
- cleanup_bundler
|
|
306
309
|
- codecov.yml
|
|
310
|
+
- docker-compose.yml
|
|
307
311
|
- lib/aptible/cli.rb
|
|
308
312
|
- lib/aptible/cli/agent.rb
|
|
309
313
|
- lib/aptible/cli/error.rb
|
|
@@ -341,6 +345,7 @@ files:
|
|
|
341
345
|
- lib/aptible/cli/resource_formatter.rb
|
|
342
346
|
- lib/aptible/cli/subcommands/apps.rb
|
|
343
347
|
- lib/aptible/cli/subcommands/backup.rb
|
|
348
|
+
- lib/aptible/cli/subcommands/backup_retention_policy.rb
|
|
344
349
|
- lib/aptible/cli/subcommands/config.rb
|
|
345
350
|
- lib/aptible/cli/subcommands/db.rb
|
|
346
351
|
- lib/aptible/cli/subcommands/deploy.rb
|
|
@@ -437,7 +442,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
437
442
|
- !ruby/object:Gem::Version
|
|
438
443
|
version: '0'
|
|
439
444
|
requirements: []
|
|
440
|
-
rubygems_version: 3.1
|
|
445
|
+
rubygems_version: 3.0.3.1
|
|
441
446
|
signing_key:
|
|
442
447
|
specification_version: 4
|
|
443
448
|
summary: Command-line interface for Aptible services
|
data/cleanup_bundler
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
# Newer rubies have Bundler 2.x installed as default so it can't be deleted
|
|
4
|
-
# We need Bundler 1.x
|
|
5
|
-
|
|
6
|
-
gempaths = `gem env gempath`.split(':')
|
|
7
|
-
gempaths.each do |gempath|
|
|
8
|
-
# lookup bundler-*.gemspec files and delete them
|
|
9
|
-
# this is the only way to completely cleanup default bundler
|
|
10
|
-
# Note: the bundler gemspecs' paths are different for CRuby and JRuby
|
|
11
|
-
Dir.glob(gempath.strip + '/specifications/**/bundler-*.gemspec').each do |p|
|
|
12
|
-
File.delete(p)
|
|
13
|
-
end
|
|
14
|
-
end
|