aptible-cli 0.25.0 → 0.26.2

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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +27 -0
  3. data/.github/workflows/test.yml +1 -1
  4. data/Dockerfile +8 -5
  5. data/Gemfile.lock +28 -17
  6. data/Makefile +53 -2
  7. data/README.md +83 -82
  8. data/aptible-cli.gemspec +5 -2
  9. data/docker-compose.yml +5 -1
  10. data/lib/aptible/cli/agent.rb +16 -0
  11. data/lib/aptible/cli/helpers/aws_account.rb +158 -0
  12. data/lib/aptible/cli/helpers/database.rb +182 -2
  13. data/lib/aptible/cli/helpers/token.rb +14 -0
  14. data/lib/aptible/cli/renderer/text.rb +33 -2
  15. data/lib/aptible/cli/resource_formatter.rb +2 -2
  16. data/lib/aptible/cli/subcommands/apps.rb +2 -2
  17. data/lib/aptible/cli/subcommands/aws_accounts.rb +252 -0
  18. data/lib/aptible/cli/subcommands/config.rb +6 -6
  19. data/lib/aptible/cli/subcommands/db.rb +67 -3
  20. data/lib/aptible/cli/subcommands/deploy.rb +46 -12
  21. data/lib/aptible/cli/subcommands/organizations.rb +55 -0
  22. data/lib/aptible/cli/subcommands/rebuild.rb +2 -1
  23. data/lib/aptible/cli/subcommands/restart.rb +2 -1
  24. data/lib/aptible/cli/subcommands/services.rb +24 -12
  25. data/lib/aptible/cli/subcommands/ssh.rb +1 -1
  26. data/lib/aptible/cli/version.rb +1 -1
  27. data/spec/aptible/cli/agent_spec.rb +70 -0
  28. data/spec/aptible/cli/helpers/database_spec.rb +118 -0
  29. data/spec/aptible/cli/helpers/token_spec.rb +70 -0
  30. data/spec/aptible/cli/subcommands/db_spec.rb +553 -0
  31. data/spec/aptible/cli/subcommands/deploy_spec.rb +42 -7
  32. data/spec/aptible/cli/subcommands/external_aws_accounts_spec.rb +737 -0
  33. data/spec/aptible/cli/subcommands/organizations_spec.rb +90 -0
  34. data/spec/aptible/cli/subcommands/services_spec.rb +77 -0
  35. data/spec/fabricators/app_external_aws_rds_connection_fabricator.rb +55 -0
  36. data/spec/fabricators/external_aws_account_fabricator.rb +49 -0
  37. data/spec/fabricators/external_aws_database_credential_fabricator.rb +46 -0
  38. data/spec/fabricators/external_aws_resource_fabricator.rb +72 -0
  39. metadata +65 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c07b217cf8ee2a23f5823638e205e780d43b3adf57397a4ecb01c8aff5998b7
4
- data.tar.gz: aefbe672ac77da98c9fd445b6ee0ffbbc044f531a97f36bc6d7bf48db46a1b4c
3
+ metadata.gz: 800b50ac57828f37560b0a291a280fbf4e9bbf121b35fd812d662e45ef39bd45
4
+ data.tar.gz: e0c70006be582d93f6e5648fae3894a481bde9cc9b43042ee399e745790aac95
5
5
  SHA512:
6
- metadata.gz: 3710b7014df38552ebce0b5780921be9020227a965fd6d67e0a5718f1ac223fde476f59c3a7e3289c268a7cf24d96c8057fe87b553b30941102028106e00d54c
7
- data.tar.gz: c2122ad6901292782834cdaedcda8b3b2638a0bcac815dec175e9fa4704282955953fa94b02f6c322daf9e47584eb944416071d907ffcd301b65d7b4f08470c8
6
+ metadata.gz: 3653523bd6b9f944e5f88128a63c058aee80722288a44f5886393059f8b1ca2f7c506c45a7df06e0794ba75814574e36372ff02c73ee1efcd1c20ee803b1d0a1
7
+ data.tar.gz: a47e8d8f71c9ac07d5001ad65616ac123884ac97ed5ab151d6d8895564bffffa623e1ef055b32fc3d4d0c661a9e71b72859b84480bde108f645f7ce33252e81f
@@ -0,0 +1,27 @@
1
+ on:
2
+ release:
3
+ types: [published]
4
+
5
+ jobs:
6
+ push:
7
+ name: Push gem to RubyGems.org
8
+ runs-on: ubuntu-latest
9
+
10
+ permissions:
11
+ id-token: write
12
+ contents: write
13
+
14
+ steps:
15
+ - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
16
+ with:
17
+ persist-credentials: false
18
+ - name: Set up Ruby
19
+ uses: ruby/setup-ruby@211ffaaa5f8dda97e9e8bca4e70d0fbaf2f8c41c
20
+ with:
21
+ bundler-cache: false
22
+ ruby-version: "3.3"
23
+
24
+ - run: bundle install
25
+
26
+ - uses: rubygems/release-gem@1c162a739e8b4cb21a676e97b087e8268d8fc40b
27
+
@@ -15,7 +15,7 @@ jobs:
15
15
  strategy:
16
16
  fail-fast: false
17
17
  matrix:
18
- ruby-version: [2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7]
18
+ ruby-version: [2.3, 2.4, 2.5, 2.6, 2.7]
19
19
  steps:
20
20
  - name: Check out code
21
21
  uses: actions/checkout@v4
data/Dockerfile CHANGED
@@ -1,8 +1,11 @@
1
- FROM ruby:2.7.8
1
+ ARG RUBY_VERSION=2.3.1
2
+ FROM ruby:${RUBY_VERSION}
2
3
 
3
- # Install and use an compatible bundler
4
- ENV BUNDLER_VERSION=1.17.3
5
- RUN gem install bundler -v "${BUNDLER_VERSION}"
4
+ ARG BUNDLER_VERSION=1.17.3
5
+ ENV BUNDLER_VERSION=${BUNDLER_VERSION}
6
+ RUN if [ "${BUNDLER_VERSION}" != "" ] ; then \
7
+ gem install bundler -v "${BUNDLER_VERSION}" ; \
8
+ fi
6
9
 
7
10
  # Install required gems before copying in code
8
11
  # to avoid re-installing gems when developing
@@ -12,7 +15,7 @@ COPY Gemfile.lock /app
12
15
  COPY aptible-cli.gemspec /app
13
16
 
14
17
  # We reference the version, so copy that in, too
15
- CMD mkdir -p /app/lib/aptible/cli/
18
+ RUN mkdir -p /app/lib/aptible/cli/
16
19
  COPY lib/aptible/cli/version.rb /app/lib/aptible/cli/
17
20
 
18
21
  RUN bundle install
data/Gemfile.lock CHANGED
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- aptible-cli (0.25.0)
4
+ aptible-cli (0.26.2)
5
5
  activesupport (>= 4.0, < 6.0)
6
- aptible-api (~> 1.8.0)
7
- aptible-auth (~> 1.2.5)
6
+ aptible-api (~> 1.12)
7
+ aptible-auth (~> 1.4)
8
8
  aptible-billing (~> 1.0)
9
9
  aptible-resource (~> 1.1)
10
10
  aws-eventstream (~> 1.1.1)
@@ -35,21 +35,21 @@ GEM
35
35
  tzinfo (~> 1.1)
36
36
  addressable (2.8.0)
37
37
  public_suffix (>= 2.0.2, < 5.0)
38
- aptible-api (1.8.1)
38
+ aptible-api (1.12.2)
39
39
  aptible-auth
40
40
  aptible-resource
41
41
  gem_config
42
42
  multipart-post (< 2.2.0)
43
- aptible-auth (1.2.5)
43
+ aptible-auth (1.5.0)
44
44
  aptible-resource (~> 1.0)
45
45
  gem_config
46
46
  multipart-post (= 2.1.1)
47
- oauth2 (= 1.4.7)
47
+ oauth2 (= 2.0.9)
48
48
  aptible-billing (1.0.1)
49
49
  activesupport (>= 4.0, < 6.0)
50
50
  aptible-resource (~> 1.0)
51
51
  stripe (>= 1.13.0)
52
- aptible-resource (1.1.3)
52
+ aptible-resource (1.1.4)
53
53
  activesupport
54
54
  fridge
55
55
  gem_config (~> 0.3.1)
@@ -71,7 +71,7 @@ GEM
71
71
  aws-sigv4 (1.2.4)
72
72
  aws-eventstream (~> 1, >= 1.0.2)
73
73
  bigdecimal (1.3.5)
74
- cbor (0.5.9.8)
74
+ cbor (0.5.10.1)
75
75
  chronic_duration (0.10.6)
76
76
  numerizer (~> 0.1.1)
77
77
  climate_control (0.0.3)
@@ -86,37 +86,41 @@ GEM
86
86
  fabrication (2.15.2)
87
87
  faraday (0.17.6)
88
88
  multipart-post (>= 1.2, < 3)
89
- fridge (1.0.0)
89
+ fridge (1.0.1)
90
90
  gem_config
91
91
  jwt (~> 2.3.0)
92
92
  gem_config (0.3.2)
93
93
  git (1.7.0)
94
94
  rchardet (~> 1.8)
95
95
  hashdiff (1.1.1)
96
+ hashie (5.0.0)
96
97
  httpclient (2.8.3)
98
+ httplog (1.5.0)
99
+ rack (>= 1.0)
100
+ rainbow (>= 2.0.0)
97
101
  i18n (0.9.5)
98
102
  concurrent-ruby (~> 1.0)
99
103
  jmespath (1.6.2)
100
104
  json (2.5.1)
101
105
  jwt (2.3.0)
102
106
  method_source (1.1.0)
103
- minitest (5.12.0)
104
- multi_json (1.15.0)
107
+ minitest (5.15.0)
105
108
  multi_xml (0.6.0)
106
109
  multipart-post (2.1.1)
107
110
  net-http-persistent (3.1.0)
108
111
  connection_pool (~> 2.2)
109
112
  numerizer (0.1.1)
110
- oauth2 (1.4.7)
111
- faraday (>= 0.8, < 2.0)
113
+ oauth2 (2.0.9)
114
+ faraday (>= 0.17.3, < 3.0)
112
115
  jwt (>= 1.0, < 3.0)
113
- multi_json (~> 1.3)
114
116
  multi_xml (~> 0.5)
115
- rack (>= 1.2, < 3)
117
+ rack (>= 1.2, < 4)
118
+ snaky_hash (~> 2.0)
119
+ version_gem (~> 1.1)
116
120
  parser (2.7.2.0)
117
121
  ast (~> 2.4.1)
118
122
  powerpack (0.1.3)
119
- pry (0.14.2)
123
+ pry (0.15.2)
120
124
  coderay (~> 1.1)
121
125
  method_source (~> 1.0)
122
126
  public_suffix (3.1.1)
@@ -146,6 +150,9 @@ GEM
146
150
  ruby-progressbar (~> 1.7)
147
151
  unicode-display_width (~> 1.0, >= 1.0.1)
148
152
  ruby-progressbar (1.13.0)
153
+ snaky_hash (2.0.3)
154
+ hashie (>= 0.1.0, < 6)
155
+ version_gem (>= 1.1.8, < 3)
149
156
  stripe (4.24.0)
150
157
  faraday (~> 0.13)
151
158
  net-http-persistent (~> 3.0)
@@ -154,13 +161,14 @@ GEM
154
161
  tins (~> 1.0)
155
162
  thor (0.20.3)
156
163
  thread_safe (0.3.6)
157
- tins (1.38.0)
164
+ tins (1.43.0)
158
165
  bigdecimal
159
166
  sync
160
167
  tzinfo (1.2.11)
161
168
  thread_safe (~> 0.1)
162
169
  unicode-display_width (1.8.0)
163
170
  uri_template (0.7.0)
171
+ version_gem (1.1.9)
164
172
  webmock (3.16.2)
165
173
  addressable (>= 2.8.0)
166
174
  crack (>= 0.3.2)
@@ -176,6 +184,9 @@ DEPENDENCIES
176
184
  bundler (~> 1.3)
177
185
  climate_control (= 0.0.3)
178
186
  fabrication (~> 2.15.2)
187
+ hashie (< 5.1)
188
+ httplog (< 1.6)
189
+ minitest (< 5.16)
179
190
  pry
180
191
  rack (~> 1.0)
181
192
  rake
data/Makefile CHANGED
@@ -1,10 +1,61 @@
1
+
2
+ export COMPOSE_IGNORE_ORPHANS ?= true
3
+ export RUBY_VERSION ?= 2.3.1
4
+ RUBY_VERSION_MAJOR = $(word 1,$(subst ., ,$(RUBY_VERSION)))
5
+ export BUNDLER_VERSION ?=
6
+ ifeq ($(BUNDLER_VERSION),)
7
+ ifeq ($(RUBY_VERSION_MAJOR),2)
8
+ export BUNDLER_VERSION = 1.17.3
9
+ endif
10
+ endif
11
+ export COMPOSE_PROJECT_NAME ?= aptible-cli-$(subst .,_,$(RUBY_VERSION))
12
+
13
+ ## Build and pull docker compose images
1
14
  build:
2
15
  docker compose build --pull
3
16
 
17
+ ## Open shell in a docker container, supports CMD=
4
18
  bash: build
5
- docker compose run cli bash
19
+ $(MAKE) run CMD=bash
20
+
21
+ CMD ?= bash
22
+ ## Run command in a docker container, supports CMD=
23
+ run:
24
+ docker compose run cli $(CMD)
6
25
 
26
+ ## Run tests in a docker container, supports ARGS=
7
27
  test: build
8
- docker compose run cli bundle exec rake
28
+ $(MAKE) test-direct ARGS="$(ARGS)"
29
+
30
+ ## Run tests in a docker container without building, supports ARGS=
31
+ test-direct:
32
+ docker compose run cli bundle exec rake $(ARGS)
33
+
34
+ ## Run rubocop in a docker container, supports ARGS=
35
+ lint: build
36
+ $(MAKE) lint-direct ARGS="$(ARGS)"
37
+
38
+ ## Run rubocop in a docker container without building, supports ARGS=
39
+ lint-direct:
40
+ docker compose run cli bundle exec rake rubocop $(ARGS)
41
+
42
+ ## Clean up docker compose resources
43
+ clean:
44
+ docker compose down --remove-orphans --volumes
45
+
46
+ ## Alias for clean
47
+ down: clean
48
+
49
+ sync-readme: build
50
+ docker compose run cli bundle exec script/sync-readme-usage
51
+
52
+ ## Show this help message
53
+ help:
54
+ @echo "\n\033[1;34mAvailable targets:\033[0m\n"
55
+ @awk 'BEGIN {FS = ":"; prev = ""} \
56
+ /^## / {prev = substr($$0, 4); next} \
57
+ /^[a-zA-Z_-]+:/ {if (prev != "") printf " \033[1;36m%-20s\033[0m %s\n", $$1, prev; prev = ""} \
58
+ {prev = ""}' $(MAKEFILE_LIST) | sort
59
+ @echo
9
60
 
10
61
  .PHONY: build bash test