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 +4 -4
- data/lib/kaboom/helpers/config.rb +6 -7
- data/lib/kaboom/helpers/database_helper.rb +2 -2
- data/lib/kaboom/version.rb +1 -1
- data/lib/kaboom.rb +29 -3
- metadata +70 -47
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8578018280533f36a35169dd8c128a4bc8d18eb63397fb8843f0307025d3b459
|
4
|
+
data.tar.gz: 724321bf06d9799fa81df056182d052087de7170da6b8051333ccee6489c455d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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")
|
48
|
-
|
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{
|
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
|
-
|
29
|
+
|
30
30
|
commands.all? { |cmd| system(cmd) }
|
31
31
|
end
|
32
32
|
end
|
data/lib/kaboom/version.rb
CHANGED
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
|
-
|
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
|
-
|
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.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
autorequire:
|
7
|
+
- Luka Bak
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
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: '
|
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: '
|
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:
|
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:
|
56
|
+
version: 1.4.0
|
57
|
+
- - "<"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '2.0'
|
55
60
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
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:
|
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:
|
89
|
+
name: erb
|
85
90
|
requirement: !ruby/object:Gem::Requirement
|
86
91
|
requirements:
|
87
|
-
- - "
|
92
|
+
- - "~>"
|
88
93
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
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: '
|
101
|
+
version: '4'
|
97
102
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
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: '
|
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: '
|
115
|
+
version: '1.5'
|
111
116
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
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:
|
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:
|
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:
|
146
|
-
type: :
|
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:
|
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
|
-
-
|
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.
|
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: []
|