kamal-backup 0.2.1 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c69dd196192b66424004ae3769d75602862227ad958e056288e1cb49b8242a8a
4
- data.tar.gz: fa70cfffdf1d95212700244fcdfbb5e7b72b8f4eaf27f2898177c16c305fe9d8
3
+ metadata.gz: 49afc009b695f3cf7f456e1b68b2b744f5adc7138f7ca4d0c84ffb1f0d3b766d
4
+ data.tar.gz: fc0261dc6c744a19e02460f27aab7e8f7555de779ea1fe7827a2fdf077042071
5
5
  SHA512:
6
- metadata.gz: c1764bd5d9a81b9d705838a27f857a679efebe7b2c3ff64be0f4faffc440678e1958124f0cb8ca81c24fa5e30380324d20d42447ae20e5b33f7d946eab7dcec4
7
- data.tar.gz: f929aecfd15c9b2ed34560292217a97e4ceff31fd4fad1b9ce0e2589af862cd725a45a275c3755ddc744bb8f0e8703c187aa96537664431b93cc4a2841ae4627
6
+ metadata.gz: 39839b0f31f1e5a9bf561e63ee2248330d1857f5f21c2736e1668aed2e226c79e3c6063c6195a6bb09e05c180bfd42a6cd6901271638e3dbba2a36ab8146844f
7
+ data.tar.gz: 3bb459e3ff320cff130ac29c523a09c50b85b3efb98ad977410cdd2db0a53e333fce935f8a92aaa65325b7d421ce36be4ed92c49a6f46d5836184f2a4009e94e
@@ -64,7 +64,8 @@ module KamalBackup
64
64
  @bridge ||= KamalBridge.new(
65
65
  redactor: redactor,
66
66
  config_file: options[:config_file],
67
- destination: options[:destination]
67
+ destination: options[:destination],
68
+ env: command_env
68
69
  )
69
70
  end
70
71
 
@@ -6,10 +6,11 @@ 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)
10
10
  @redactor = redactor
11
11
  @config_file = config_file
12
12
  @destination = destination
13
+ @env = env
13
14
  end
14
15
 
15
16
  def accessory_name(preferred: nil)
@@ -104,16 +105,54 @@ module KamalBackup
104
105
  def normalize_secret_env(values)
105
106
  case values
106
107
  when Hash
107
- values.each_with_object({}) { |(key, _value), env| env[key.to_s] = "configured" }
108
+ values.each_with_object({}) do |(key, secret_key), env|
109
+ add_resolved_secret(env, target: key, source: secret_key)
110
+ end
108
111
  when Array
109
- values.each_with_object({}) { |key, env| env[key.to_s] = "configured" }
112
+ values.each_with_object({}) do |entry, env|
113
+ target, source = parse_secret_entry(entry)
114
+ add_resolved_secret(env, target: target, source: source)
115
+ end
110
116
  when String, Symbol
111
- { values.to_s => "configured" }
117
+ {}.tap do |env|
118
+ target, source = parse_secret_entry(values)
119
+ add_resolved_secret(env, target: target, source: source)
120
+ end
112
121
  else
113
122
  {}
114
123
  end
115
124
  end
116
125
 
126
+ def parse_secret_entry(entry)
127
+ target, source = entry.to_s.split(":", 2)
128
+ [ target, source || target ]
129
+ end
130
+
131
+ def add_resolved_secret(env, target:, source:)
132
+ if value = resolved_secret(source)
133
+ env[target.to_s] = value
134
+ end
135
+ end
136
+
137
+ def resolved_secret(key)
138
+ raw = resolved_secrets[key.to_s] || @env[key.to_s]
139
+ value = raw.to_s.strip
140
+ value.empty? ? nil : value
141
+ end
142
+
143
+ def resolved_secrets
144
+ @resolved_secrets ||= parse_secret_output(capture_kamal(kamal_secrets_print_argv).stdout)
145
+ end
146
+
147
+ def parse_secret_output(output)
148
+ output.to_s.lines.each_with_object({}) do |line, secrets|
149
+ key, value = line.chomp.split("=", 2)
150
+ next if key.to_s.empty?
151
+
152
+ secrets[key] = value.to_s
153
+ end
154
+ end
155
+
117
156
  def fetch(hash, key)
118
157
  hash[key] || hash[key.to_s] || hash[key.to_sym]
119
158
  end
@@ -139,6 +178,15 @@ module KamalBackup
139
178
  ]
140
179
  end
141
180
 
181
+ def kamal_secrets_print_argv
182
+ [
183
+ "kamal",
184
+ "secrets",
185
+ "print",
186
+ *kamal_option_argv
187
+ ]
188
+ end
189
+
142
190
  def kamal_option_argv
143
191
  argv = []
144
192
  argv.concat(["-c", @config_file]) if @config_file
@@ -1,3 +1,3 @@
1
1
  module KamalBackup
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kamal-backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - crmne