bamboolab_kaboom 0.1.0 → 0.3.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: b6131743c73049e741f8e78b6523a920f7f43a169f268d7dee816a35b1cbfe5c
4
- data.tar.gz: 0df5be6710bde734916305e1a9402ef83a040120cce5ede56430f289c8ce77f4
3
+ metadata.gz: 8578018280533f36a35169dd8c128a4bc8d18eb63397fb8843f0307025d3b459
4
+ data.tar.gz: 724321bf06d9799fa81df056182d052087de7170da6b8051333ccee6489c455d
5
5
  SHA512:
6
- metadata.gz: 60d8e4c9ce9a98bcbcf2a52bf75f068d785c5e7192700fd51b95ce22eae1e013eb99dc1d128dc206a438fb1d8a50d156f2003abe10cc3ff8170a386bf82fb87a
7
- data.tar.gz: 5a5400c999c25135c3fb711df4805b2ce42eb6876a56ddc37805b4ee6728c7106879b4c48ee87d74042dea1917e2b58bab33558d5e6ba56e94e3a0c2c5d8b124
6
+ metadata.gz: 452ea23529b978c0d6da23178361a824206fd8c3a2aed300ea919e02af1790119cba8e01391b2ce0aa8f8a5729a3a3bb642dc8877e59b925a57133d306749608
7
+ data.tar.gz: 3823c46fc5c4a9482074c8a3b9d0ce47b7bcb7e1444f558373614f7b6c728a3b5c909a71994511814503015046c6bbfcf01cc9f275833c231e42927096a8e71e
@@ -22,16 +22,12 @@ module Kaboom
22
22
  say_and_exit "Error: This command must be run in a root folder of a Rails application", :red
23
23
  end
24
24
 
25
- unless File.exist?('config/credentials/development.key')
26
- say_and_exit "Error: development.key credentials file not found (source it from 1Password)", :red
27
- end
28
-
29
25
  if DESTINATIONS.empty? && !File.exist?('./config/deploy.yml')
30
26
  say_and_exit "Error: No deploy configuration files found in config directory.", :red
31
27
  end
32
28
 
33
29
  if Bundler::Dsl.evaluate('Gemfile', nil, {})&.ruby_version&.versions&.first != RUBY_VERSION
34
- say_and_exit "Error: Ruby version in current projects Gemfile is not the same as the currently running Ruby version.", :red
30
+ say "Warning: Ruby version specified in the project's Gemfile is not the same as the currently running Ruby version.", :yellow
35
31
  end
36
32
  end
37
33
 
@@ -44,8 +40,11 @@ module Kaboom
44
40
  say_and_exit "Environment file #{env_file} not found, run 'kamal envify -d destination'", :red
45
41
  end
46
42
 
47
- destination_clear_envs = YAML.load_file("config/deploy.#{destination}.yml")['env']['clear']
48
- ENV.update(destination_clear_envs.transform_values(&:to_s))
43
+ destination_clear_envs = YAML.load_file("config/deploy.#{destination}.yml")&.dig('env', 'clear') || {}
44
+ clear_envs = YAML.load_file("config/deploy.yml")&.dig('env', 'clear') || {}
45
+ merged_clear_envs = clear_envs.merge(destination_clear_envs)
46
+
47
+ ENV.update(merged_clear_envs.transform_values(&:to_s))
49
48
  end
50
49
 
51
50
  def load_credentials(destination)
@@ -23,10 +23,10 @@ module Kaboom
23
23
  %Q{psql #{local_connection_string} -c "DROP DATABASE IF EXISTS #{config[:name]}" >/dev/null 2>&1},
24
24
  %Q{psql #{local_connection_string} -c "CREATE DATABASE #{config[:name]};" >/dev/null 2>&1},
25
25
  %Q{psql #{local_connection_string.gsub('template1', config[:name])} < #{backup_file} >/dev/null 2>&1},
26
- %Q{RAILS_MASTER_KEY=`cat config/credentials/development.key` env bin/rails db:environment:set RAILS_ENV=development >/dev/null 2>&1},
26
+ %Q{psql #{local_connection_string.gsub('template1', config[:name])} -c "UPDATE ar_internal_metadata SET value = 'development' WHERE key = 'environment';" >/dev/null 2>&1},
27
27
  %Q{psql #{local_connection_string} -c "ALTER DATABASE #{config[:name]} OWNER TO #{config[:username]};" >/dev/null 2>&1},
28
28
  ]
29
- #require 'pry'; binding.pry
29
+
30
30
  commands.all? { |cmd| system(cmd) }
31
31
  end
32
32
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kaboom
4
- VERSION = "0.1.0"
4
+ VERSION = "0.3.0"
5
5
  end
data/lib/kaboom.rb CHANGED
@@ -42,12 +42,30 @@ module Kaboom
42
42
 
43
43
  desc 'ssh DESTINATION', 'Run a bash SSH for deployed apps, defaults to staging'
44
44
  method_option :role, aliases: '-r', type: :string, desc: 'Role to run the SSH at (web, sidekiq, cron...)', default: 'web'
45
- def ssh(destination = 'staging')
45
+ method_option :server, aliases: '-s', type: :boolean, desc: 'Connect to underlying server running the app'
46
+ def ssh(destination = nil)
47
+ if options[:server] && options[:role] != 'web'
48
+ say "Warning: server option is supplied, role option will be ignored", :yellow
49
+ end
50
+
51
+ destination ||= 'staging' # Use default if destination is nil
46
52
  validate_repository!
47
53
  validate_destination(destination)
48
-
54
+
49
55
  confirm_production_action('SSH') if destination == 'production'
50
- run_command("bash", destination)
56
+
57
+ if options[:server]
58
+ server_user, server_host = get_server_user_and_host(destination)
59
+ say "Running SSH on #{server_host} as #{server_user} (#{destination})...", :green
60
+ exec("ssh #{server_user}@#{server_host}")
61
+ else
62
+ run_command("bash", destination)
63
+ end
64
+ end
65
+
66
+ desc 'version', 'Show Kaboom version'
67
+ def version
68
+ say "Kaboom #{Kaboom::VERSION}"
51
69
  end
52
70
 
53
71
  private
@@ -57,5 +75,13 @@ module Kaboom
57
75
  exec("kamal app exec -i --reuse -q '#{command}' -d #{destination} --roles=#{options[:role]}")
58
76
  end
59
77
 
78
+ def get_server_user_and_host(destination)
79
+ config = YAML.load_file("config/deploy.#{destination}.yml")
80
+ server = config.dig('servers', 'web', 'hosts')[0]
81
+ user = config.dig('ssh', 'user') || 'root'
82
+
83
+ say_and_exit "Error: Invalid destination file (config/deploy.#{destination}.yml)" , :red unless server
84
+ return user, server
85
+ end
60
86
  end
61
87
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bamboolab_kaboom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
- - Your Name
8
- autorequire:
7
+ - Luka Bak
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-08-16 00:00:00.000000000 Z
10
+ date: 2025-02-10 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: thor
@@ -28,132 +27,158 @@ dependencies:
28
27
  name: dotenv
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - ">="
30
+ - - "~>"
32
31
  - !ruby/object:Gem::Version
33
- version: '0'
32
+ version: '2.8'
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - ">="
37
+ - - "~>"
39
38
  - !ruby/object:Gem::Version
40
- version: '0'
39
+ version: '2.8'
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: kamal
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - ">="
46
45
  - !ruby/object:Gem::Version
47
- version: '0'
46
+ version: 1.4.0
47
+ - - "<"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.0'
48
50
  type: :runtime
49
51
  prerelease: false
50
52
  version_requirements: !ruby/object:Gem::Requirement
51
53
  requirements:
52
54
  - - ">="
53
55
  - !ruby/object:Gem::Version
54
- version: '0'
56
+ version: 1.4.0
57
+ - - "<"
58
+ - !ruby/object:Gem::Version
59
+ version: '2.0'
55
60
  - !ruby/object:Gem::Dependency
56
- name: pry
61
+ name: tty-prompt
57
62
  requirement: !ruby/object:Gem::Requirement
58
63
  requirements:
59
- - - ">="
64
+ - - "~>"
60
65
  - !ruby/object:Gem::Version
61
- version: '0'
66
+ version: '0.2'
62
67
  type: :runtime
63
68
  prerelease: false
64
69
  version_requirements: !ruby/object:Gem::Requirement
65
70
  requirements:
66
- - - ">="
71
+ - - "~>"
67
72
  - !ruby/object:Gem::Version
68
- version: '0'
73
+ version: '0.2'
69
74
  - !ruby/object:Gem::Dependency
70
- name: tty-prompt
75
+ name: yaml
71
76
  requirement: !ruby/object:Gem::Requirement
72
77
  requirements:
73
- - - ">="
78
+ - - "~>"
74
79
  - !ruby/object:Gem::Version
75
- version: '0'
80
+ version: '0.3'
76
81
  type: :runtime
77
82
  prerelease: false
78
83
  version_requirements: !ruby/object:Gem::Requirement
79
84
  requirements:
80
- - - ">="
85
+ - - "~>"
81
86
  - !ruby/object:Gem::Version
82
- version: '0'
87
+ version: '0.3'
83
88
  - !ruby/object:Gem::Dependency
84
- name: yaml
89
+ name: erb
85
90
  requirement: !ruby/object:Gem::Requirement
86
91
  requirements:
87
- - - ">="
92
+ - - "~>"
88
93
  - !ruby/object:Gem::Version
89
- version: '0'
94
+ version: '4'
90
95
  type: :runtime
91
96
  prerelease: false
92
97
  version_requirements: !ruby/object:Gem::Requirement
93
98
  requirements:
94
- - - ">="
99
+ - - "~>"
95
100
  - !ruby/object:Gem::Version
96
- version: '0'
101
+ version: '4'
97
102
  - !ruby/object:Gem::Dependency
98
- name: erb
103
+ name: google-cloud-storage
99
104
  requirement: !ruby/object:Gem::Requirement
100
105
  requirements:
101
- - - ">="
106
+ - - "~>"
102
107
  - !ruby/object:Gem::Version
103
- version: '0'
108
+ version: '1.5'
104
109
  type: :runtime
105
110
  prerelease: false
106
111
  version_requirements: !ruby/object:Gem::Requirement
107
112
  requirements:
108
- - - ">="
113
+ - - "~>"
109
114
  - !ruby/object:Gem::Version
110
- version: '0'
115
+ version: '1.5'
111
116
  - !ruby/object:Gem::Dependency
112
- name: google-cloud-storage
117
+ name: tty-progressbar
113
118
  requirement: !ruby/object:Gem::Requirement
114
119
  requirements:
115
- - - ">="
120
+ - - "~>"
116
121
  - !ruby/object:Gem::Version
117
- version: '0'
122
+ version: '0.18'
118
123
  type: :runtime
119
124
  prerelease: false
120
125
  version_requirements: !ruby/object:Gem::Requirement
121
126
  requirements:
122
- - - ">="
127
+ - - "~>"
123
128
  - !ruby/object:Gem::Version
124
- version: '0'
129
+ version: '0.18'
125
130
  - !ruby/object:Gem::Dependency
126
- name: tty-progressbar
131
+ name: activesupport
127
132
  requirement: !ruby/object:Gem::Requirement
128
133
  requirements:
129
134
  - - ">="
130
135
  - !ruby/object:Gem::Version
131
- version: '0'
136
+ version: '6.0'
137
+ - - "<"
138
+ - !ruby/object:Gem::Version
139
+ version: '9.0'
132
140
  type: :runtime
133
141
  prerelease: false
134
142
  version_requirements: !ruby/object:Gem::Requirement
135
143
  requirements:
136
144
  - - ">="
137
145
  - !ruby/object:Gem::Version
138
- version: '0'
146
+ version: '6.0'
147
+ - - "<"
148
+ - !ruby/object:Gem::Version
149
+ version: '9.0'
139
150
  - !ruby/object:Gem::Dependency
140
- name: activesupport
151
+ name: pry
152
+ requirement: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - "~>"
155
+ - !ruby/object:Gem::Version
156
+ version: '0.14'
157
+ type: :development
158
+ prerelease: false
159
+ version_requirements: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - "~>"
162
+ - !ruby/object:Gem::Version
163
+ version: '0.14'
164
+ - !ruby/object:Gem::Dependency
165
+ name: ruby-lsp
141
166
  requirement: !ruby/object:Gem::Requirement
142
167
  requirements:
143
168
  - - ">="
144
169
  - !ruby/object:Gem::Version
145
- version: '6.0'
146
- type: :runtime
170
+ version: 0.17.3
171
+ type: :development
147
172
  prerelease: false
148
173
  version_requirements: !ruby/object:Gem::Requirement
149
174
  requirements:
150
175
  - - ">="
151
176
  - !ruby/object:Gem::Version
152
- version: '6.0'
177
+ version: 0.17.3
153
178
  description: Kaboom is a CLI tool to handle app maintenence, SSH connections, database
154
179
  and assets backups for apps deployed by Kamal.
155
180
  email:
156
- - your.email@example.com
181
+ - bakluka@gmail.com
157
182
  executables:
158
183
  - kaboom
159
184
  extensions: []
@@ -166,11 +191,10 @@ files:
166
191
  - lib/kaboom/helpers/database_helper.rb
167
192
  - lib/kaboom/helpers/utils.rb
168
193
  - lib/kaboom/version.rb
169
- homepage:
194
+ homepage: https://bamboolab.eu
170
195
  licenses:
171
196
  - MIT
172
197
  metadata: {}
173
- post_install_message:
174
198
  rdoc_options: []
175
199
  require_paths:
176
200
  - lib
@@ -185,8 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
209
  - !ruby/object:Gem::Version
186
210
  version: '0'
187
211
  requirements: []
188
- rubygems_version: 3.5.11
189
- signing_key:
212
+ rubygems_version: 3.6.2
190
213
  specification_version: 4
191
214
  summary: A CLI for managing Rails apps deployed by Kamal.
192
215
  test_files: []