aptible-cli 0.19.9 → 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 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