renuo-cli 4.10.2 → 4.11.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: fe8c8f966927fb90fcccff5261cd1e29f5c410da2d6f45b9c45a9e7099939131
4
- data.tar.gz: 93a03c8f69039c7e890f5a3e17dcf6b87b759668adc8969aed65fb14c0da7f65
3
+ metadata.gz: d7a64110378ec1c2591e47e75409554144f7f5f718dd8634978b6137d3a2f85e
4
+ data.tar.gz: cb5c0f8744b0f38fe14124e50b7935c7d5ccc7a681da9ed326549707ba4d9d1a
5
5
  SHA512:
6
- metadata.gz: 31759c696baf26fb2ffffc18013e0bec5e45c2697be678d01ce1d4cb3878e51e4935be7cf86a553ff09de97af100e0013cf222a8349811c0575bbb854dd9a56a
7
- data.tar.gz: 710ee8ba8f679adc9e6cd4d43a38774d91e935608a855620fc81c53530498546920e704bd8f7900d618141163562c6ea96295704a86ec27f91e7d57788682860
6
+ metadata.gz: d7cf8a49e4c273c3fdecddb2422198f9e3fd517ac086db2fdd66a6691955dcb7349bc0ea28fdc3d89655d9d7e9c37e363fc61c9e4a6fa20ee41eba1988b12333
7
+ data.tar.gz: 13a151e1e03d3fc57930c9065c96477f991783c2122949bb71740a10c52732ff3a989d77b2454e13a2ef5adab5ac451e4190af5f377751ac736d191ae43bb34d
@@ -12,6 +12,8 @@ class CheckDeploioStatus
12
12
  PROJECT = ENV.fetch "DEPLOIO_PROJECT", nil
13
13
 
14
14
  def initialize(opts)
15
+ abort "missing env DEPLOIO_APP_NAME" if APP_NAME.nil?
16
+ abort "missing env DEPLOIO_PROJECT" if PROJECT.nil?
15
17
  @revision = opts.git_revision || `git rev-parse HEAD`.strip
16
18
  end
17
19
 
@@ -0,0 +1,166 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CreateDeploioApp # rubocop:disable Metrics/ClassLength
4
+ DATABASE_SSH_KEY_FILE = "temporary_database_ssh_key"
5
+ GITHUB_SSH_KEY_FILE_NAME = "temporary_repository_ssh_key"
6
+ GITHUB_DEPLOY_KEY_TITLE = "deploio-deploy-key"
7
+ SSH_ALGORITHM = "Ed25519"
8
+
9
+ def run(_args)
10
+ parse_arguments
11
+ setup_commands
12
+ setup_environments
13
+ ensure
14
+ cleanup
15
+ end
16
+
17
+ private
18
+
19
+ # rubocop:disable Metrics/MethodLength
20
+ def parse_arguments
21
+ @project_name = ask("Enter the project name (e.g: my_app): ")
22
+ validate_project_name!
23
+
24
+ @app_name = ask("Enter the app name (e.g: main): ")
25
+ validate_app_name!
26
+
27
+ @git_url = ask("Enter the git URL (e.g: git@github.com:my-org/my-app.git): ")
28
+ validate_git_url
29
+
30
+ @postgres_version = ask("Enter the Postgres version (major version only, e.g., 16): ")
31
+ validate_postgres_version
32
+
33
+ @vault_name = ask("Enter the 1Password vault name (leave empty to skip): ")
34
+ if @vault_name.empty?
35
+ say "Skipping 1Password vault setup. Defaulting to Deploio."
36
+ @vault_name = "Deploio"
37
+ else
38
+ validate_vault_name
39
+ end
40
+ end
41
+ # rubocop:enable Metrics/MethodLength
42
+
43
+ def ask(prompt)
44
+ print prompt
45
+ gets.chomp
46
+ end
47
+
48
+ def setup_commands
49
+ say "# Commands to setup your Deploio application\n".bold
50
+ say_project_creation
51
+ say "\n# Configure repository access\n".bold
52
+ say_configure_repository_deploy_key
53
+ end
54
+
55
+ def setup_environments
56
+ ENVIRONMENTS.each do |environment|
57
+ say "\n# Commands to create #{environment} application \n".bold
58
+ say_database_creation(environment)
59
+ say "\n# Commands to create #{environment} database \n".bold
60
+ say_app_creation(environment)
61
+ end
62
+ end
63
+
64
+ def cleanup
65
+ say "rm #{GITHUB_SSH_KEY_FILE_NAME}"
66
+ end
67
+
68
+ def validate_app_name!
69
+ abort(">> App name must be provided") if @app_name.blank?
70
+ end
71
+
72
+ def validate_project_name!
73
+ abort(">> Project name must be between 3 and 63 characters.") unless @project_name&.length&.between?(3, 63)
74
+ end
75
+
76
+ def validate_git_url
77
+ abort(">> Git URL must be provided") unless @git_url
78
+ http_git_url_regex = URI::DEFAULT_PARSER.make_regexp(%w[http https])
79
+ ssh_git_url_regex = %r{^(git@[\w.-]+[:|/][\w.-]+/[\w.-]+\.git)$}
80
+ valid_git_url = @git_url.match?(http_git_url_regex) || @git_url.match?(ssh_git_url_regex)
81
+ abort(">> Git URL must be valid") unless valid_git_url
82
+ end
83
+
84
+ def validate_postgres_version
85
+ return if @postgres_version.match?(/^\d+$/)
86
+
87
+ abort("The postgres version is invalid. Only major versions are allowed (e.g., use 16 instead of 16.4)")
88
+ end
89
+
90
+ def validate_vault_name
91
+ return if @vault_name.present?
92
+
93
+ abort("The vault name must be provided")
94
+ end
95
+
96
+ def say_project_creation
97
+ say <<~OUTPUT
98
+ nctl create project #{@project_name} \\
99
+ --display-name='#{@app_name}'
100
+ OUTPUT
101
+ end
102
+
103
+ def say_database_creation(environment)
104
+ say <<~OUTPUT
105
+ nctl create postgres #{environment} \\
106
+ --project=#{@project_name} \\
107
+ --postgres-version=#{@postgres_version}
108
+ OUTPUT
109
+ end
110
+
111
+ def say_app_creation(environment)
112
+ generate_ssh_key(DATABASE_SSH_KEY_FILE)
113
+ say <<~OUTPUT
114
+ nctl create app #{environment} \\
115
+ --project #{@project_name} \\
116
+ --git-ssh-private-key-from-file=#{GITHUB_SSH_KEY_FILE_NAME} \\
117
+ --git-url=#{@git_url} \\
118
+ --git-revision="#{environment}" \\
119
+ --basic-auth=false \\ # Disabling Deploio basic auth as Rails app handles authentication
120
+ --build-env=SECRET_KEY_BASE='rails secret' \\ # Don't forget to generate the secret key
121
+ --language=ruby-heroku
122
+ OUTPUT
123
+ end
124
+
125
+ def generate_ssh_key(file_name)
126
+ say <<~OUTPUT
127
+ ssh-keygen -t #{SSH_ALGORITHM} \\
128
+ -f #{file_name} \\
129
+ -N ''
130
+ OUTPUT
131
+
132
+ say <<~OUTPUT
133
+ op item create \\
134
+ --title #{file_name} \\
135
+ --vault #{@vault_name} \\
136
+ --category ssh-key \\
137
+ --tags #{@project_name} \\
138
+ --ssh-public-key < #{file_name}.pub \\
139
+ --ssh-private-key < #{file_name}
140
+ OUTPUT
141
+ end
142
+
143
+ def say_configure_repository_deploy_key
144
+ generate_ssh_key(GITHUB_SSH_KEY_FILE_NAME)
145
+ say_configure_deploy_key
146
+ end
147
+
148
+ def say_configure_deploy_key
149
+ unless @git_url&.include?("github")
150
+ say "# Attention: Deploy key unconfigured because not using GitHub".colorize(:orange)
151
+ return
152
+ end
153
+
154
+ repo_name = @git_url[%r{github.com/(.*/.*)\.git}, 1]
155
+ unless repo_name
156
+ say "# Attention: Deploy key unconfigured because repository URL is not valid".colorize(:orange)
157
+ return
158
+ end
159
+
160
+ say <<~OUTPUT
161
+ gh repo deploy-key add #{GITHUB_SSH_KEY_FILE_NAME} \\
162
+ --repo #{repo_name} \\
163
+ --title #{GITHUB_DEPLOY_KEY_TITLE}
164
+ OUTPUT
165
+ end
166
+ end
@@ -3,7 +3,7 @@
3
3
  # :nocov:
4
4
  module Renuo
5
5
  module Cli
6
- VERSION = "4.10.2"
6
+ VERSION = "4.11.0"
7
7
  NAME = "renuo-cli"
8
8
  end
9
9
  end
data/lib/renuo/cli.rb CHANGED
@@ -16,6 +16,7 @@ require "renuo/cli/app/generate_password"
16
16
  require "renuo/cli/app/upgrade_laptop"
17
17
  require "renuo/cli/app/create_aws_project"
18
18
  require "renuo/cli/app/create_heroku_app"
19
+ require "renuo/cli/app/create_deploio_app"
19
20
  require "renuo/cli/app/configure_sentry"
20
21
  require "renuo/cli/app/create_new_logins"
21
22
  require "renuo/cli/app/release_project"
@@ -156,7 +157,7 @@ module Renuo
156
157
  end
157
158
 
158
159
  command "create-heroku-app" do |c|
159
- c.syntax = "renuo create-heroku-app"
160
+ c.syntax = "renuo create-heroku-app [application-name]"
160
161
  c.summary = "Generates the script necessary to setup an application on Heroku."
161
162
  c.description = "Generates the script necessary to setup an application on Heroku."
162
163
  c.example "renuo create-heroku-app hello", "generates the command to create hello on Heroku"
@@ -165,6 +166,26 @@ module Renuo
165
166
  end
166
167
  end
167
168
 
169
+ command "create-deploio-app" do |c|
170
+ c.syntax = "renuo create-deploio-app"
171
+ c.summary = "Generates the script necessary to setup an application on Deploio."
172
+ c.description = <<~DESC
173
+ Generates the script necessary to setup an application on Deploio.
174
+ This command will:
175
+ - Prompt for the application name, Git URL, PostgreSQL version, and 1Password vault name.
176
+ - Validate the provided inputs.
177
+ - Generate the necessary commands to create a project on Deploio.
178
+ - Configure repository access by generating SSH keys and adding them to 1Password.
179
+ - Create the application and database for each specified environment.
180
+ DESC
181
+ c.example "renuo create-deploio-app",
182
+ "Prompts the user for the necessary information and generates the commands " \
183
+ "to create the project, databases, and apps on Deploio."
184
+ c.action do |args|
185
+ CreateDeploioApp.new.run(args)
186
+ end
187
+ end
188
+
168
189
  command "configure-sentry" do |c|
169
190
  c.syntax = "renuo configure-sentry [project-name] [SENTRY_DSN]"
170
191
  c.summary = "Generates the script necessary to setup sentry on Heroku."
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: renuo-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.10.2
4
+ version: 4.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Renuo AG
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-02-04 00:00:00.000000000 Z
10
+ date: 2025-02-21 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: activesupport
@@ -93,202 +93,6 @@ dependencies:
93
93
  - - ">="
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0'
96
- - !ruby/object:Gem::Dependency
97
- name: aruba
98
- requirement: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: 0.14.5
103
- type: :development
104
- prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: 0.14.5
110
- - !ruby/object:Gem::Dependency
111
- name: bundler
112
- requirement: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '2.5'
117
- type: :development
118
- prerelease: false
119
- version_requirements: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '2.5'
124
- - !ruby/object:Gem::Dependency
125
- name: byebug
126
- requirement: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- version: '0'
131
- type: :development
132
- prerelease: false
133
- version_requirements: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - ">="
136
- - !ruby/object:Gem::Version
137
- version: '0'
138
- - !ruby/object:Gem::Dependency
139
- name: cucumber
140
- requirement: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: '3.1'
145
- type: :development
146
- prerelease: false
147
- version_requirements: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '3.1'
152
- - !ruby/object:Gem::Dependency
153
- name: dotenv
154
- requirement: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: 2.7.2
159
- type: :development
160
- prerelease: false
161
- version_requirements: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - "~>"
164
- - !ruby/object:Gem::Version
165
- version: 2.7.2
166
- - !ruby/object:Gem::Dependency
167
- name: mdl
168
- requirement: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - "~>"
171
- - !ruby/object:Gem::Version
172
- version: '0.13'
173
- type: :development
174
- prerelease: false
175
- version_requirements: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - "~>"
178
- - !ruby/object:Gem::Version
179
- version: '0.13'
180
- - !ruby/object:Gem::Dependency
181
- name: pry
182
- requirement: !ruby/object:Gem::Requirement
183
- requirements:
184
- - - "~>"
185
- - !ruby/object:Gem::Version
186
- version: '0.14'
187
- type: :development
188
- prerelease: false
189
- version_requirements: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - "~>"
192
- - !ruby/object:Gem::Version
193
- version: '0.14'
194
- - !ruby/object:Gem::Dependency
195
- name: rake
196
- requirement: !ruby/object:Gem::Requirement
197
- requirements:
198
- - - "~>"
199
- - !ruby/object:Gem::Version
200
- version: '13.0'
201
- type: :development
202
- prerelease: false
203
- version_requirements: !ruby/object:Gem::Requirement
204
- requirements:
205
- - - "~>"
206
- - !ruby/object:Gem::Version
207
- version: '13.0'
208
- - !ruby/object:Gem::Dependency
209
- name: renuocop
210
- requirement: !ruby/object:Gem::Requirement
211
- requirements:
212
- - - ">="
213
- - !ruby/object:Gem::Version
214
- version: '0'
215
- type: :development
216
- prerelease: false
217
- version_requirements: !ruby/object:Gem::Requirement
218
- requirements:
219
- - - ">="
220
- - !ruby/object:Gem::Version
221
- version: '0'
222
- - !ruby/object:Gem::Dependency
223
- name: rspec
224
- requirement: !ruby/object:Gem::Requirement
225
- requirements:
226
- - - "~>"
227
- - !ruby/object:Gem::Version
228
- version: '3.5'
229
- type: :development
230
- prerelease: false
231
- version_requirements: !ruby/object:Gem::Requirement
232
- requirements:
233
- - - "~>"
234
- - !ruby/object:Gem::Version
235
- version: '3.5'
236
- - !ruby/object:Gem::Dependency
237
- name: simplecov
238
- requirement: !ruby/object:Gem::Requirement
239
- requirements:
240
- - - ">="
241
- - !ruby/object:Gem::Version
242
- version: '0'
243
- type: :development
244
- prerelease: false
245
- version_requirements: !ruby/object:Gem::Requirement
246
- requirements:
247
- - - ">="
248
- - !ruby/object:Gem::Version
249
- version: '0'
250
- - !ruby/object:Gem::Dependency
251
- name: simplecov-console
252
- requirement: !ruby/object:Gem::Requirement
253
- requirements:
254
- - - ">="
255
- - !ruby/object:Gem::Version
256
- version: '0'
257
- type: :development
258
- prerelease: false
259
- version_requirements: !ruby/object:Gem::Requirement
260
- requirements:
261
- - - ">="
262
- - !ruby/object:Gem::Version
263
- version: '0'
264
- - !ruby/object:Gem::Dependency
265
- name: vcr
266
- requirement: !ruby/object:Gem::Requirement
267
- requirements:
268
- - - "~>"
269
- - !ruby/object:Gem::Version
270
- version: '6.2'
271
- type: :development
272
- prerelease: false
273
- version_requirements: !ruby/object:Gem::Requirement
274
- requirements:
275
- - - "~>"
276
- - !ruby/object:Gem::Version
277
- version: '6.2'
278
- - !ruby/object:Gem::Dependency
279
- name: webmock
280
- requirement: !ruby/object:Gem::Requirement
281
- requirements:
282
- - - "~>"
283
- - !ruby/object:Gem::Version
284
- version: '3.23'
285
- type: :development
286
- prerelease: false
287
- version_requirements: !ruby/object:Gem::Requirement
288
- requirements:
289
- - - "~>"
290
- - !ruby/object:Gem::Version
291
- version: '3.23'
292
96
  description: The Renuo CLI automates some commonly used workflows by providing a command
293
97
  line interface.
294
98
  email:
@@ -298,26 +102,9 @@ executables:
298
102
  extensions: []
299
103
  extra_rdoc_files: []
300
104
  files:
301
- - ".editorconfig"
302
- - ".gitignore"
303
- - ".mdlrc"
304
- - ".rspec"
305
- - ".rubocop.yml"
306
- - ".ruby-version"
307
- - ".semaphore/bin/cache_restore"
308
- - ".semaphore/bin/cache_store"
309
- - ".semaphore/main-deploy.yml"
310
- - ".semaphore/semaphore.yml"
311
- - Gemfile
312
105
  - LICENSE.txt
313
106
  - README.md
314
- - Rakefile
315
- - bin/check
316
- - bin/console
317
107
  - bin/renuo
318
- - bin/run
319
- - bin/setup
320
- - config/1password-secrets.yml
321
108
  - lib/renuo/cli.rb
322
109
  - lib/renuo/cli/app/check_deploio_status.rb
323
110
  - lib/renuo/cli/app/command_helper.rb
@@ -326,6 +113,7 @@ files:
326
113
  - lib/renuo/cli/app/configure_semaphore.rb
327
114
  - lib/renuo/cli/app/configure_sentry.rb
328
115
  - lib/renuo/cli/app/create_aws_project.rb
116
+ - lib/renuo/cli/app/create_deploio_app.rb
329
117
  - lib/renuo/cli/app/create_heroku_app.rb
330
118
  - lib/renuo/cli/app/create_new_logins.rb
331
119
  - lib/renuo/cli/app/create_slidev_presentation.rb
@@ -359,10 +147,6 @@ files:
359
147
  - lib/renuo/cli/app/upgrade_laptop/upgrade_laptop_execution.rb
360
148
  - lib/renuo/cli/app/upgrade_laptop/upgrade_mac_os.rb
361
149
  - lib/renuo/cli/version.rb
362
- - notification.yml
363
- - renuo-cli.gemspec
364
- - vcr_cassettes/successful_uptimerobot_calls.yml
365
- - vcr_cassettes/unsuccessful_uptimerobot_calls.yml
366
150
  homepage: https://github.com/renuo/renuo-cli
367
151
  licenses:
368
152
  - MIT
@@ -375,7 +159,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
375
159
  requirements:
376
160
  - - ">="
377
161
  - !ruby/object:Gem::Version
378
- version: 3.1.0
162
+ version: 3.2.0
379
163
  required_rubygems_version: !ruby/object:Gem::Requirement
380
164
  requirements:
381
165
  - - ">="
data/.editorconfig DELETED
@@ -1,21 +0,0 @@
1
- # EditorConfig helps developers define and maintain consistent
2
- # coding styles between different editors and IDEs
3
- # editorconfig.org
4
-
5
- root = true
6
-
7
- [*]
8
-
9
- # Change these settings to your own preference
10
- indent_style = space
11
- indent_size = 2
12
-
13
- # We recommend you to keep these unchanged
14
- end_of_line = lf
15
- charset = utf-8
16
- trim_trailing_whitespace = true
17
- insert_final_newline = true
18
-
19
- [*.md]
20
- trim_trailing_whitespace = false
21
-
data/.gitignore DELETED
@@ -1,106 +0,0 @@
1
- ### JetBrains template
2
- # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
3
-
4
- *.iml
5
-
6
- ## Directory-based project format:
7
- .idea/
8
- # if you remove the above rule, at least ignore the following:
9
-
10
- # User-specific stuff:
11
- # .idea/workspace.xml
12
- # .idea/tasks.xml
13
- # .idea/dictionaries
14
-
15
- # Sensitive or high-churn files:
16
- # .idea/dataSources.ids
17
- # .idea/dataSources.xml
18
- # .idea/sqlDataSources.xml
19
- # .idea/dynamic.xml
20
- # .idea/uiDesigner.xml
21
-
22
- # Gradle:
23
- # .idea/gradle.xml
24
- # .idea/libraries
25
-
26
- # Mongo Explorer plugin:
27
- # .idea/mongoSettings.xml
28
-
29
- ## File-based project format:
30
- *.ipr
31
- *.iws
32
-
33
- ## Plugin-specific files:
34
-
35
- # IntelliJ
36
- /out/
37
-
38
- # mpeltonen/sbt-idea plugin
39
- .idea_modules/
40
-
41
- # JIRA plugin
42
- atlassian-ide-plugin.xml
43
-
44
- # Crashlytics plugin (for Android Studio and IntelliJ)
45
- com_crashlytics_export_strings.xml
46
- crashlytics.properties
47
- crashlytics-build.properties
48
- ### Vim template
49
- [._]*.s[a-w][a-z]
50
- [._]s[a-w][a-z]
51
- *.un~
52
- Session.vim
53
- .netrwhist
54
- *~
55
- ### Ruby template
56
- *.gem
57
- *.rbc
58
- /.config
59
- /coverage/
60
- /InstalledFiles
61
- /pkg/
62
- /spec/reports/
63
- /spec/examples.txt
64
- /test/tmp/
65
- /test/version_tmp/
66
- /tmp/
67
-
68
- ## Specific to RubyMotion:
69
- .dat*
70
- .repl_history
71
- build/
72
-
73
- ## Documentation cache and generated files:
74
- /.yardoc/
75
- /_yardoc/
76
- /doc/
77
- /rdoc/
78
-
79
- ## Environment normalisation:
80
- /.bundle/
81
- /vendor/bundle
82
- /lib/bundler/man/
83
-
84
- # for a library or gem, you might want to ignore these files since the code is
85
- # intended to run in multiple environments; otherwise, check them in:
86
- # Gemfile.lock
87
- # .ruby-version
88
- # .ruby-gemset
89
-
90
- # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
91
- .rvmrc
92
-
93
- # Created by .ignore support plugin (hsz.mobi)
94
- .local_storage
95
- /.bundle/
96
- /.yardoc
97
- /Gemfile.lock
98
- /_yardoc/
99
- /coverage/
100
- /doc/
101
- /pkg/
102
- /spec/reports/
103
- /tmp/
104
- /certificates/
105
- /config/application.yml
106
- .env
data/.mdlrc DELETED
@@ -1,2 +0,0 @@
1
- rules "~MD013"
2
- git_recurse true
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --require spec_helper
data/.rubocop.yml DELETED
@@ -1,11 +0,0 @@
1
- inherit_gem:
2
- renuocop: config/base.yml
3
-
4
- RSpec/MessageSpies:
5
- Enabled: false
6
-
7
- Rails/Output:
8
- Enabled: false
9
-
10
- Style/GlobalVars:
11
- Enabled: false
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 3.4.1
@@ -1,16 +0,0 @@
1
- #!/bin/sh
2
-
3
- for cache_group in "$@"
4
- do
5
- case $cache_group in
6
-
7
- ruby)
8
- cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock),gems-$SEMAPHORE_GIT_BRANCH,gems-develop,gems-master
9
- ;;
10
-
11
- *)
12
- echo "Invalid argument: Cache group $cache_group not found."
13
- exit 1
14
- ;;
15
- esac
16
- done
@@ -1,16 +0,0 @@
1
- #!/bin/sh
2
-
3
- for cache_group in "$@"
4
- do
5
- case $cache_group in
6
-
7
- ruby)
8
- cache store gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock) vendor/bundle
9
- ;;
10
-
11
- *)
12
- echo "Invalid argument: Cache group $cache_group not found."
13
- exit 1
14
- ;;
15
- esac
16
- done
@@ -1,18 +0,0 @@
1
- version: v1.0
2
- name: main-deploy
3
- agent:
4
- machine:
5
- type: e2-standard-2
6
- os_image: ubuntu2204
7
-
8
- blocks:
9
- - name: main-deploy
10
- task:
11
- secrets:
12
- - name: rubygems-deploy
13
- jobs:
14
- - name: main-deploy
15
- commands:
16
- - checkout --use-cache
17
- - gem build renuo-cli
18
- - gem push renuo-cli-*.gem
@@ -1,37 +0,0 @@
1
- version: "v1.0"
2
- name: renuo-cli
3
-
4
- agent:
5
- machine:
6
- type: e2-standard-2
7
- os_image: ubuntu2204
8
-
9
- auto_cancel:
10
- running:
11
- when: "true"
12
-
13
- fail_fast:
14
- cancel:
15
- when: "branch != 'main'"
16
-
17
- blocks:
18
- - name: tests
19
- execution_time_limit:
20
- minutes: 5
21
- dependencies: []
22
- task:
23
- secrets:
24
- - name: renuo-cli
25
- prologue:
26
- commands:
27
- - checkout --use-cache
28
- - source .semaphore/bin/cache_restore ruby
29
- - bundle install -j 4 --path vendor/bundle
30
- - source .semaphore/bin/cache_store ruby
31
- jobs:
32
- - name: tests
33
- commands:
34
- - ENV=CI bin/check
35
- promotions:
36
- - name: main
37
- pipeline_file: main-deploy.yml
data/Gemfile DELETED
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
-
5
- gemspec
data/Rakefile DELETED
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "bundler/gem_tasks"
4
- require "rspec/core/rake_task"
5
- require "cucumber/rake/task"
6
-
7
- RSpec::Core::RakeTask.new(:spec)
8
- Cucumber::Rake::Task.new
9
-
10
- task default: %i[spec cucumber]
data/bin/check DELETED
@@ -1,26 +0,0 @@
1
- #!/bin/sh
2
-
3
- if ! bundle exec rubocop -D -c .rubocop.yml
4
- then
5
- echo 'rubocop detected issues!'
6
- exit 1
7
- fi
8
-
9
- if ! bundle exec mdl .
10
- then
11
- echo 'Violated markdown rules, see https://github.com/mivok/markdownlint/blob/master/docs/RULES.md, commit aborted'
12
- exit 1
13
- fi
14
-
15
- if ! bundle exec rspec
16
- then
17
- echo 'rspec errors'
18
- exit 1
19
- fi
20
-
21
- if ! bundle exec cucumber
22
- then
23
- echo 'cucumber errors'
24
- exit 1
25
- fi
26
-
data/bin/console DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'bundler/setup'
4
- require 'renuo/cli'
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- require 'pry'
10
- Pry.start
11
-
data/bin/run DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- lib = File.expand_path('../../lib', __FILE__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'renuo/cli'
6
-
7
- Renuo::CLI.new.start
data/bin/setup DELETED
@@ -1,6 +0,0 @@
1
- #!/bin/bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
-
5
- gem install bundler --conservative
6
- bundle install
@@ -1,11 +0,0 @@
1
- items:
2
- - default_folder: "./certificates/"
3
- private_link: "https://start.1password.com/open/i?a=QZNJJCCDWVCGBGI73Z2L55KSGE&v=c4grjzxqhcipunrlflodw7ml7i&i=2v6oqm72wdp7divjqsy6grcjzi&h=renuo.1password.com"
4
- files:
5
- - name: "file1.txt"
6
- - name: "file2.csv"
7
- - name: "file3.md"
8
- env_variables:
9
- - name: "ENV_VAR1"
10
- - name: "ENV_VAR2"
11
- - name: "ENV_VAR3"
data/notification.yml DELETED
@@ -1,25 +0,0 @@
1
- apiVersion: v1alpha
2
- kind: Notification
3
- metadata:
4
- name: <%= project_name %>
5
- spec:
6
- rules:
7
- - name: deployment notifications
8
- filter:
9
- projects: [<%= project_name %>]
10
- branches: [main, develop]
11
- pipelines: [/.*-deploy.yml/]
12
- notify:
13
- slack:
14
- endpoint: <%= slack_url %>
15
- channels: ["#project-<%= project_name %>"]
16
- - name: build notifications
17
- filter:
18
- projects: [<%= project_name %>]
19
- branches: [main, develop]
20
- pipelines: [semaphore.yml]
21
- results: [failed]
22
- notify:
23
- slack:
24
- endpoint: <%= slack_url %>
25
- channels: ["#project-<%= project_name %>"]
data/renuo-cli.gemspec DELETED
@@ -1,48 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- lib = File.expand_path("lib", __dir__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require "renuo/cli/version"
6
-
7
- # rubocop:disable Metrics/BlockLength
8
- Gem::Specification.new do |spec|
9
- spec.name = Renuo::Cli::NAME
10
- spec.version = Renuo::Cli::VERSION
11
- spec.authors = ["Renuo AG"]
12
- spec.email = ["info@renuo.ch"]
13
-
14
- spec.summary = "The Renuo CLI automates some common workflows."
15
- spec.description = "The Renuo CLI automates some commonly used workflows by providing a command line interface."
16
- spec.homepage = "https://github.com/renuo/renuo-cli"
17
- spec.license = "MIT"
18
-
19
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
- spec.executables << "renuo"
21
- spec.require_paths = ["lib"]
22
- spec.metadata["rubygems_mfa_required"] = "true"
23
-
24
- spec.required_ruby_version = ">= 3.1.0"
25
-
26
- spec.add_dependency "activesupport", "~> 8.0.0"
27
- spec.add_dependency "colorize", "~> 0"
28
- spec.add_dependency "commander", "~> 5.0"
29
- spec.add_dependency "gems", "~> 1.1"
30
- spec.add_dependency "redcarpet", "~> 3.0"
31
- spec.add_dependency "terminal-table"
32
-
33
- spec.add_development_dependency "aruba", "~> 0.14.5"
34
- spec.add_development_dependency "bundler", "~> 2.5"
35
- spec.add_development_dependency "byebug"
36
- spec.add_development_dependency "cucumber", "~> 3.1"
37
- spec.add_development_dependency "dotenv", "~> 2.7.2"
38
- spec.add_development_dependency "mdl", "~> 0.13"
39
- spec.add_development_dependency "pry", "~> 0.14"
40
- spec.add_development_dependency "rake", "~> 13.0"
41
- spec.add_development_dependency "renuocop"
42
- spec.add_development_dependency "rspec", "~> 3.5"
43
- spec.add_development_dependency "simplecov"
44
- spec.add_development_dependency "simplecov-console"
45
- spec.add_development_dependency "vcr", "~> 6.2"
46
- spec.add_development_dependency "webmock", "~> 3.23"
47
- end
48
- # rubocop:enable Metrics/BlockLength
@@ -1,93 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: post
5
- uri: https://api.uptimerobot.com/v2/newMonitor
6
- body:
7
- encoding: US-ASCII
8
- string: friendly_name=test.ch&url=https%3A%2F%2Ftest.ch&type=1&interval=300&alert_contacts=0716852_0_0-2806074_0_0&api_key=<API-KEY>
9
- headers:
10
- Accept-Encoding:
11
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
- Accept:
13
- - "*/*"
14
- User-Agent:
15
- - Ruby
16
- Host:
17
- - api.uptimerobot.com
18
- response:
19
- status:
20
- code: 200
21
- message: OK
22
- headers:
23
- Date:
24
- - Fri, 05 Apr 2019 15:04:18 GMT
25
- Content-Type:
26
- - application/json; charset=utf-8
27
- Transfer-Encoding:
28
- - chunked
29
- Connection:
30
- - keep-alive
31
- Access-Control-Allow-Origin:
32
- - "*"
33
- Etag:
34
- - W/"33-+Q4/l04ZnLs/j/WZc5awQaqxWko"
35
- Vary:
36
- - Accept-Encoding
37
- Expect-Ct:
38
- - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
39
- Server:
40
- - cloudflare
41
- Cf-Ray:
42
- - 4c2c69e72e76cc60-ZRH
43
- body:
44
- encoding: ASCII-8BIT
45
- string: '{"stat":"ok","monitor":{"id":782356891,"status":1}}'
46
- http_version:
47
- recorded_at: Fri, 05 Apr 2019 15:04:18 GMT
48
- - request:
49
- method: post
50
- uri: https://api.uptimerobot.com/v2/editMonitor
51
- body:
52
- encoding: US-ASCII
53
- string: id=782356891&status=0&api_key=<API-KEY>
54
- headers:
55
- Accept-Encoding:
56
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
57
- Accept:
58
- - "*/*"
59
- User-Agent:
60
- - Ruby
61
- Host:
62
- - api.uptimerobot.com
63
- response:
64
- status:
65
- code: 200
66
- message: OK
67
- headers:
68
- Date:
69
- - Fri, 05 Apr 2019 15:04:18 GMT
70
- Content-Type:
71
- - application/json; charset=utf-8
72
- Content-Length:
73
- - '40'
74
- Connection:
75
- - keep-alive
76
- Access-Control-Allow-Origin:
77
- - "*"
78
- Etag:
79
- - W/"28-IX6S7KrVjMYO09zUzWnglIFSrbs"
80
- Vary:
81
- - Accept-Encoding
82
- Expect-Ct:
83
- - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
84
- Server:
85
- - cloudflare
86
- Cf-Ray:
87
- - 4c2c69e8be39cc3c-ZRH
88
- body:
89
- encoding: UTF-8
90
- string: '{"stat":"ok","monitor":{"id":782356891}}'
91
- http_version:
92
- recorded_at: Fri, 05 Apr 2019 15:04:18 GMT
93
- recorded_with: VCR 4.0.0
@@ -1,48 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: post
5
- uri: https://api.uptimerobot.com/v2/newMonitor
6
- body:
7
- encoding: US-ASCII
8
- string: friendly_name=test.ch&url=https%3A%2F%2Ftest.ch&type=1&interval=300&alert_contacts=0716852_0_0-2806074_0_0&api_key=<API-KEY>
9
- headers:
10
- Accept-Encoding:
11
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
- Accept:
13
- - "*/*"
14
- User-Agent:
15
- - Ruby
16
- Host:
17
- - api.uptimerobot.com
18
- response:
19
- status:
20
- code: 200
21
- message: OK
22
- headers:
23
- Date:
24
- - Fri, 05 Apr 2019 15:04:18 GMT
25
- Content-Type:
26
- - application/json; charset=utf-8
27
- Transfer-Encoding:
28
- - chunked
29
- Connection:
30
- - keep-alive
31
- Access-Control-Allow-Origin:
32
- - "*"
33
- Etag:
34
- - W/"55-MrMKN/ToW+ARHfUbinDrKAYK9Jc"
35
- Vary:
36
- - Accept-Encoding
37
- Expect-Ct:
38
- - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
39
- Server:
40
- - cloudflare
41
- Cf-Ray:
42
- - 4c2c69ea6f943e5c-ZRH
43
- body:
44
- encoding: ASCII-8BIT
45
- string: '{"stat":"fail","error":{"type":"already_exists","message":"monitor already exists."}}'
46
- http_version:
47
- recorded_at: Fri, 05 Apr 2019 15:04:18 GMT
48
- recorded_with: VCR 4.0.0