aptible-cli 0.19.9 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32982651526f1859445bcdfa762881e25f68b72dbce3ecca1a0169a900f4cca5
4
- data.tar.gz: 21a14594b144844b6e833ba2f5811736d0c642839375aadbbea356853478c8ec
3
+ metadata.gz: 985fa3322948f2656c41b9b6e7ed378625424554dcf26d1db461386586f488a9
4
+ data.tar.gz: 71150a291daf6e6a054979d6308e9a919654679b88b9581d51959c3100cf9a07
5
5
  SHA512:
6
- metadata.gz: 50a22a2a0c8eee1b4c65912a0e986cb723250b7541a6ded2e31112ae11d06cca48ae05329395d1d8f44704e917818d037f3b5d47eac74f3f320ab39ed1496527
7
- data.tar.gz: 398cc5e09a3c0b1458a633ad4e5b0bcdb09040160207052face94142dee4b171ecfbe9c68af51007cb8e16cff03249e7821cd041834c4a161e66a10e770d0ea5
6
+ metadata.gz: 3551dbb8cff5d22404f022652c70dadf2407f46f11443c84b36eeaa9ba1ec2cb13260d3fd613402c24532e366daf25d9516e19c05a3017f605d5fb8d8a5d5059
7
+ data.tar.gz: 7ef21a787bbb1c81587fd3ad4ef4adee351a10de48d9b80299d8f7f83912a67d1a54c835c856be2b79d93783c6c45e7211d6abb7f5eb7531f80bc834eadbfcf1
data/.dockerignore ADDED
@@ -0,0 +1,20 @@
1
+ *.gem
2
+ *.rbc
3
+ *.dump
4
+ .bundle
5
+ .config
6
+ .yardoc
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ /.idea
19
+ /.vscode
20
+ Makefile
data/.gitignore CHANGED
@@ -4,7 +4,6 @@
4
4
  .bundle
5
5
  .config
6
6
  .yardoc
7
- Gemfile.lock
8
7
  InstalledFiles
9
8
  _yardoc
10
9
  coverage
data/.travis.yml CHANGED
@@ -11,9 +11,10 @@ rvm:
11
11
  - "2.7"
12
12
 
13
13
  before_install:
14
- - ./cleanup_bundler
15
14
  - gem install bundler -v '< 2'
16
15
  script:
17
16
  - bundle exec rake
18
17
  - bundle exec script/sync-readme-usage
19
18
  - git diff --exit-code
19
+ env:
20
+ - BUNDLER_VERSION=1.17.3
data/Dockerfile CHANGED
@@ -1,10 +1,27 @@
1
1
  FROM ruby:2.7.8
2
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
3
9
  WORKDIR /app
4
- COPY . /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/
5
17
 
6
- RUN ./cleanup_bundler
7
- RUN gem install bundler -v '< 2'
8
18
  RUN bundle install
9
19
 
10
- CMD ["/app/bin/aptible"]
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
@@ -0,0 +1,10 @@
1
+ build:
2
+ docker compose build --pull
3
+
4
+ bash: build
5
+ docker compose run cli bash
6
+
7
+ test: build
8
+ docker compose run cli bundle exec rake
9
+
10
+ .PHONY: build bash test
data/README.md CHANGED
@@ -36,7 +36,7 @@ Commands:
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
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] # Set the environemnt's backup retention policy
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
40
40
  aptible config # Print an app's current configuration
41
41
  aptible config:add [VAR1=VAL1] [VAR2=VAL2] [...] # Add an ENV variable to an app
42
42
  aptible config:get [VAR1] # Print a specific key within an app's current configuration
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.4'
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 CHANGED
@@ -1,10 +1,10 @@
1
1
  services:
2
- # docker compose run cli bash
3
- # export APTIBLE_ACCESS_TOKEN=xxx
4
- # bundle exec ./bin/aptible help
5
2
  cli:
6
3
  build: .
7
4
  volumes:
8
5
  - type: bind
9
6
  source: .
10
7
  target: /app
8
+ - type: bind
9
+ source: $HOME/.aptible/tokens.json
10
+ target: /root/.aptible/tokens.json
@@ -17,14 +17,8 @@ module Aptible
17
17
  account = ensure_environment(environment: env)
18
18
  policy = account.backup_retention_policies.first
19
19
  unless policy
20
- # Show the default policy
21
- policy = Aptible::Api::BackupRetentionPolicy.new
22
- policy.attributes[:id] = 'default'
23
- policy.attributes[:daily] = 90
24
- policy.attributes[:monthly] = 72
25
- policy.attributes[:yearly] = 0
26
- policy.attributes[:make_copy] = true
27
- policy.attributes[:keep_final] = true
20
+ raise Thor::Error, "Environment #{env} does not have a " \
21
+ 'custom backup retention policy'
28
22
  end
29
23
 
30
24
  Formatter.render(Renderer.current) do |root|
@@ -40,34 +34,52 @@ module Aptible
40
34
  '[--daily DAILY_BACKUPS] [--monthly MONTHLY_BACKUPS] ' \
41
35
  '[--yearly YEARLY_BACKUPS] [--make-copy|--no-make-copy] ' \
42
36
  '[--keep-final|--no-keep-final]',
43
- "Set the environemnt's backup retention policy"
37
+ "Change the environemnt's backup retention policy"
44
38
  option :daily, type: :numeric,
45
- desc: 'Number of daily backups to retain',
46
- default: 90
39
+ desc: 'Number of daily backups to retain'
47
40
  option :monthly, type: :numeric,
48
- desc: 'Number of monthly backups to retain',
49
- default: 72
41
+ desc: 'Number of monthly backups to retain'
50
42
  option :yearly, type: :numeric,
51
- desc: 'Number of yarly backups to retain',
52
- default: 0
43
+ desc: 'Number of yearly backups to retain'
53
44
  option :make_copy, type: :boolean,
54
- desc: 'If backup copies should be created',
55
- default: true
45
+ desc: 'If backup copies should be created'
56
46
  option(
57
47
  :keep_final,
58
48
  type: :boolean,
59
- desc: 'If final backups should be kept when databases are '\
60
- 'deprovisioned',
61
- default: true
49
+ desc: 'If final backups should be kept when databases are ' \
50
+ 'deprovisioned'
62
51
  )
63
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
+
64
58
  account = ensure_environment(environment: env)
65
- policy = account.create_backup_retention_policy!(**options)
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)
66
78
 
67
79
  Formatter.render(Renderer.current) do |root|
68
80
  root.object do |node|
69
81
  ResourceFormatter.inject_backup_retention_policy(
70
- node, policy.reload, account
82
+ node, new_policy.reload, account
71
83
  )
72
84
  end
73
85
  end
@@ -1,5 +1,5 @@
1
1
  module Aptible
2
2
  module CLI
3
- VERSION = '0.19.9'.freeze
3
+ VERSION = '0.20.0'.freeze
4
4
  end
5
5
  end
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.19.9
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-05-29 00:00:00.000000000 Z
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: '1.4'
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: '1.4'
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,22 @@ 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"
297
298
  - Dockerfile
298
299
  - Gemfile
300
+ - Gemfile.lock
299
301
  - LICENSE.md
302
+ - Makefile
300
303
  - README.md
301
304
  - Rakefile
302
305
  - SECURITY.md
303
306
  - appveyor.yml
304
307
  - aptible-cli.gemspec
305
308
  - bin/aptible
306
- - cleanup_bundler
307
309
  - codecov.yml
308
310
  - docker-compose.yml
309
311
  - lib/aptible/cli.rb
@@ -440,7 +442,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
440
442
  - !ruby/object:Gem::Version
441
443
  version: '0'
442
444
  requirements: []
443
- rubygems_version: 3.1.6
445
+ rubygems_version: 3.0.3.1
444
446
  signing_key:
445
447
  specification_version: 4
446
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