minfra-cli 3.1.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 57af73071c5c324ef7f908176a695c2cbdee6d2a1be1d65f6d0b9a9055c10aa4
4
- data.tar.gz: 45e45f3bc0766a8fe6354f3b036bcb3327a4c79df5c1026a9e84d3f8314b8b37
3
+ metadata.gz: 559888088dd171a754ae0ccab6b6e8bf9ff0940e5cea2a64da90c83714250e1f
4
+ data.tar.gz: 212ed7b65798feda2b14a408d2f8066e73b21736ade7eed3a5fe5fafe50adbc6
5
5
  SHA512:
6
- metadata.gz: 242cdcc9c027b110adc0fc0c3615de37a627888a594b8104212c9631530c99d7b8fafcc1ab5f3bd7808cc08af53c988b309394583c6abf4a40b7b49b25c9318e
7
- data.tar.gz: 286be675ceb5ad1839d5c500fb2e23219fa7dbce860dbe1308f5d884e0c350898b541de1288088e2330b46b1022f93786ca925d8bff608b5cf903737350d090e
6
+ metadata.gz: 68ae0b701280177906cd79fbbebcd18b53380abb023f23ecb94c40b410ca0be47b6b2ffd2a8bad4e11b5f6e1b8430ff6aa4c3f2f1cde92e4e15d222fef001fc8
7
+ data.tar.gz: b47a78a9681d51bbde838d6d9527a5dfb7eea37f37d5cdcf78d28ab037e2bdfc85aca43ae72c3ddae3b1087ab82930f1d7d4097262f0c940ad79693995bed243
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 4.1.0
2
+ * Minfra::Cli::Templater can now user helper modules
3
+ # 4.0.0
4
+ * in apply mode of secrets we prefix the name with the chart name
1
5
  # 3.1.0
2
6
  * overriding backends via MINFRA_HIERA_BACKENDS
3
7
  * overriding Yaml Backend to allow :extension: setting
@@ -5,6 +5,26 @@ module Minfra
5
5
  module Cli
6
6
  # not threadsafe!
7
7
  class Templater
8
+ class TemplateBinding
9
+ def _binding
10
+ @binding ||= binding
11
+ end
12
+ end
13
+ #see https://apidock.com/ruby/v2_5_5/ERB/result_with_hash
14
+ class ERBPlus < ERB
15
+ def result_with(hash: {}, helpers: [])
16
+ b = TemplateBinding.new
17
+ hash.each_pair do |key, value|
18
+ b.define_singleton_method(key) do value end
19
+ end
20
+ helpers.each do |helper|
21
+ b.extend helper
22
+ end
23
+ p b._binding.receiver
24
+ result(b._binding)
25
+ end
26
+ end
27
+
8
28
  def self.read(path, params: {}, fallback: nil)
9
29
  p = Pathname.new(path)
10
30
  if p.exist?
@@ -18,11 +38,11 @@ module Minfra
18
38
  render(content, params)
19
39
  end
20
40
 
21
- def self.render(template, params)
22
- new(template).render(params)
41
+ def self.render(template, params, helpers: [])
42
+ new(template, helpers: ).render(params)
23
43
  end
24
44
 
25
- def self.template_dir(src, dst, extensions)
45
+ def self.template_dir(src, dst, extensions, helpers: [], params: {})
26
46
  destination = Pathname.new(dst)
27
47
  destination.mkpath
28
48
  source = Pathname.new(src)
@@ -34,7 +54,7 @@ module Minfra
34
54
  elsif extensions.include?(File.extname(filename)) # a file
35
55
  # puts("templating: #{filename}")
36
56
  content = File.read(filename)
37
- modified_content = Minfra::Cli::Templater.render(content, {})
57
+ modified_content = Minfra::Cli::Templater.render(content, params, helpers: )
38
58
  File.write("#{destination}/#{rel_path}", modified_content)
39
59
  else
40
60
  # puts("copying : #{filename}")
@@ -43,10 +63,11 @@ module Minfra
43
63
  end
44
64
  end
45
65
 
46
- def initialize(template)
47
- @erb = ERB.new(template)
66
+ def initialize(template, helpers: [])
67
+ @erb = ERBPlus.new(template)
48
68
  @check_mode = false
49
69
  @check_missing = []
70
+ @helpers = helpers
50
71
  end
51
72
 
52
73
  def missing?
@@ -67,7 +88,7 @@ module Minfra
67
88
  end
68
89
 
69
90
  def render(params)
70
- @erb.result_with_hash(params)
91
+ @erb.result_with(hash: params, helpers: @helpers)
71
92
  end
72
93
 
73
94
  def method_missing(name)
@@ -78,6 +99,7 @@ module Minfra
78
99
  super
79
100
  end
80
101
  end
102
+
81
103
  end
82
104
  end
83
105
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Minfra
4
4
  module Cli
5
- VERSION = '3.1.0'
5
+ VERSION = '4.1.0'
6
6
  end
7
7
  end
@@ -390,7 +390,7 @@ module Orchparty
390
390
  result = ServiceBuilder.build(name, 'apply', block)
391
391
  file = Tempfile.create(name)
392
392
  result.tmp_file = file.path
393
- file.puts "apiVersion: v1\nkind: Secret\nmetadata:\n name: #{name}\ntype: Opaque\ndata:"
393
+ file.puts "apiVersion: v1\nkind: Secret\nmetadata:\n name: #{@node.name}-#{name}\ntype: Opaque\ndata:"
394
394
  result._.each do |key, value|
395
395
  file.puts " #{key}: #{Base64.strict_encode64(value.respond_to?(:call) ? value.call : value)}"
396
396
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minfra-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Schrammel
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-14 00:00:00.000000000 Z
11
+ date: 2024-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor