kamal-backup 0.2.1 → 0.2.3
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/kamal_backup/cli.rb +2 -1
- data/lib/kamal_backup/kamal_bridge.rb +65 -6
- data/lib/kamal_backup/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dfb6c6c9e7956edddb88036298071e47511a29cd062fbaa2553f89d9a310dfaa
|
|
4
|
+
data.tar.gz: fc3f699dcd1daa667cb4fd984729c9adf9b9e762d99c0716da5869da236c3bc9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 640dc10b40aa46159391cac4f73567746ccd845359d10dae443b500234136ca43962fbc83353308e14809a5c9c1d3a51ebe35e9b6b3bc517b204183968d2d2e5
|
|
7
|
+
data.tar.gz: 7637ff0dc17cdf53968ad8b0ca4908ac1cdb62cfa119fd489b2c3a639c19479176532c3437b82955226111da04826a6546670b8f3b6b66e4292dac955a13774b
|
data/lib/kamal_backup/cli.rb
CHANGED
|
@@ -6,10 +6,12 @@ module KamalBackup
|
|
|
6
6
|
DEFAULT_CONFIG_FILE = "config/deploy.yml"
|
|
7
7
|
VERSION_LINE_PATTERN = /\A\d+(?:\.\d+)+(?:[-.][A-Za-z0-9]+)*\z/
|
|
8
8
|
|
|
9
|
-
def initialize(redactor:, config_file: nil, destination: nil)
|
|
9
|
+
def initialize(redactor:, config_file: nil, destination: nil, env: ENV, cwd: Dir.pwd)
|
|
10
10
|
@redactor = redactor
|
|
11
11
|
@config_file = config_file
|
|
12
12
|
@destination = destination
|
|
13
|
+
@env = env
|
|
14
|
+
@cwd = cwd
|
|
13
15
|
end
|
|
14
16
|
|
|
15
17
|
def accessory_name(preferred: nil)
|
|
@@ -104,23 +106,61 @@ module KamalBackup
|
|
|
104
106
|
def normalize_secret_env(values)
|
|
105
107
|
case values
|
|
106
108
|
when Hash
|
|
107
|
-
values.each_with_object({})
|
|
109
|
+
values.each_with_object({}) do |(key, secret_key), env|
|
|
110
|
+
add_resolved_secret(env, target: key, source: secret_key)
|
|
111
|
+
end
|
|
108
112
|
when Array
|
|
109
|
-
values.each_with_object({})
|
|
113
|
+
values.each_with_object({}) do |entry, env|
|
|
114
|
+
target, source = parse_secret_entry(entry)
|
|
115
|
+
add_resolved_secret(env, target: target, source: source)
|
|
116
|
+
end
|
|
110
117
|
when String, Symbol
|
|
111
|
-
{
|
|
118
|
+
{}.tap do |env|
|
|
119
|
+
target, source = parse_secret_entry(values)
|
|
120
|
+
add_resolved_secret(env, target: target, source: source)
|
|
121
|
+
end
|
|
112
122
|
else
|
|
113
123
|
{}
|
|
114
124
|
end
|
|
115
125
|
end
|
|
116
126
|
|
|
127
|
+
def parse_secret_entry(entry)
|
|
128
|
+
target, source = entry.to_s.split(":", 2)
|
|
129
|
+
[ target, source || target ]
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def add_resolved_secret(env, target:, source:)
|
|
133
|
+
if value = resolved_secret(source)
|
|
134
|
+
env[target.to_s] = value
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def resolved_secret(key)
|
|
139
|
+
raw = resolved_secrets[key.to_s] || @env[key.to_s]
|
|
140
|
+
value = raw.to_s.strip
|
|
141
|
+
value.empty? ? nil : value
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def resolved_secrets
|
|
145
|
+
@resolved_secrets ||= parse_secret_output(capture_kamal(kamal_secrets_print_argv).stdout)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def parse_secret_output(output)
|
|
149
|
+
output.to_s.lines.each_with_object({}) do |line, secrets|
|
|
150
|
+
key, value = line.chomp.split("=", 2)
|
|
151
|
+
next if key.to_s.empty?
|
|
152
|
+
|
|
153
|
+
secrets[key] = value.to_s
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
117
157
|
def fetch(hash, key)
|
|
118
158
|
hash[key] || hash[key.to_s] || hash[key.to_sym]
|
|
119
159
|
end
|
|
120
160
|
|
|
121
161
|
def kamal_config_argv
|
|
122
162
|
[
|
|
123
|
-
|
|
163
|
+
*kamal_command,
|
|
124
164
|
"config",
|
|
125
165
|
*kamal_option_argv,
|
|
126
166
|
"--version",
|
|
@@ -130,7 +170,7 @@ module KamalBackup
|
|
|
130
170
|
|
|
131
171
|
def kamal_exec_argv(accessory_name, command)
|
|
132
172
|
[
|
|
133
|
-
|
|
173
|
+
*kamal_command,
|
|
134
174
|
"accessory",
|
|
135
175
|
"exec",
|
|
136
176
|
accessory_name,
|
|
@@ -139,6 +179,25 @@ module KamalBackup
|
|
|
139
179
|
]
|
|
140
180
|
end
|
|
141
181
|
|
|
182
|
+
def kamal_secrets_print_argv
|
|
183
|
+
[
|
|
184
|
+
*kamal_command,
|
|
185
|
+
"secrets",
|
|
186
|
+
"print",
|
|
187
|
+
*kamal_option_argv
|
|
188
|
+
]
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def kamal_command
|
|
192
|
+
if File.executable?(File.join(@cwd, "bin", "kamal"))
|
|
193
|
+
[ "bin/kamal" ]
|
|
194
|
+
elsif File.file?(File.join(@cwd, "Gemfile"))
|
|
195
|
+
[ "bundle", "exec", "kamal" ]
|
|
196
|
+
else
|
|
197
|
+
[ "kamal" ]
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
|
|
142
201
|
def kamal_option_argv
|
|
143
202
|
argv = []
|
|
144
203
|
argv.concat(["-c", @config_file]) if @config_file
|
data/lib/kamal_backup/version.rb
CHANGED