minfra-cli 4.0.0 → 4.1.1

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: 6f3b63b9c6e391715e568fed4c5e113a7574afc4d8944b78bbed9b0a8f1fed28
4
- data.tar.gz: 915a61225192f2f2d306b3736f02c5573e737932a7bab2ccdc64dffb6108eda1
3
+ metadata.gz: ea616e6ead0473faae98389aa80a06a829059445d4e2c04c6860b8ab293f557e
4
+ data.tar.gz: 75e9ef0413aeaf293e69c1e19918dc9cb7179bdb97fac7450fdc8b21bfce3565
5
5
  SHA512:
6
- metadata.gz: c8cea1d91de6744dd40eb6ae3d841b95fc0890723c953f9ac2af27b5c1e0e22af13be7bb1fc996bdd552cca9e1488e9eed24ae0f0c4d4479d97eb8a31ffd052a
7
- data.tar.gz: 2d427efb9533341b778d700f44d5f7596972331a4cb8e0f2beb6e23af83cad67ce36445102bd5de9251de9d0be16941772de4dfa2475918c42372b50d7d277ce
6
+ metadata.gz: d68c1105544f8f64cc80d46dd4ee534e1e46ce4827c38dbbfc50e503283185ba4c1a15b1287e9e05584fb6a4b5ab34e72bca0a93c8533472cddaeec869dc170e
7
+ data.tar.gz: f8ee54db259d6afed47ea39c1b1f5ba8af5438c9f063607719028e4360f0f45e15aeeeab53d723e153a147cf1c5c6c5d2e73c428b673e0bc0a23fb41e6b3728b
data/CHANGELOG.md CHANGED
@@ -1,8 +1,12 @@
1
+ # 4.1.1
2
+ * fix: puts statement removed
3
+ # 4.1.0
4
+ * improvement: Minfra::Cli::Templater can now user helper modules
1
5
  # 4.0.0
2
- * in apply mode of secrets we prefix the name with the chart name
6
+ * feature: in apply mode of secrets we prefix the name with the chart name
3
7
  # 3.1.0
4
- * overriding backends via MINFRA_HIERA_BACKENDS
5
- * overriding Yaml Backend to allow :extension: setting
8
+ * improvement: overriding backends via MINFRA_HIERA_BACKENDS
9
+ * improvement: overriding Yaml Backend to allow :extension: setting
6
10
  # 3.0.2
7
11
  * removing complex dns manipulation and hardcoding google servers
8
12
  # 3.0.1
@@ -5,6 +5,25 @@ 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
+ result(b._binding)
24
+ end
25
+ end
26
+
8
27
  def self.read(path, params: {}, fallback: nil)
9
28
  p = Pathname.new(path)
10
29
  if p.exist?
@@ -18,11 +37,11 @@ module Minfra
18
37
  render(content, params)
19
38
  end
20
39
 
21
- def self.render(template, params)
22
- new(template).render(params)
40
+ def self.render(template, params, helpers: [])
41
+ new(template, helpers: ).render(params)
23
42
  end
24
43
 
25
- def self.template_dir(src, dst, extensions)
44
+ def self.template_dir(src, dst, extensions, helpers: [], params: {})
26
45
  destination = Pathname.new(dst)
27
46
  destination.mkpath
28
47
  source = Pathname.new(src)
@@ -34,7 +53,7 @@ module Minfra
34
53
  elsif extensions.include?(File.extname(filename)) # a file
35
54
  # puts("templating: #{filename}")
36
55
  content = File.read(filename)
37
- modified_content = Minfra::Cli::Templater.render(content, {})
56
+ modified_content = Minfra::Cli::Templater.render(content, params, helpers: )
38
57
  File.write("#{destination}/#{rel_path}", modified_content)
39
58
  else
40
59
  # puts("copying : #{filename}")
@@ -43,10 +62,11 @@ module Minfra
43
62
  end
44
63
  end
45
64
 
46
- def initialize(template)
47
- @erb = ERB.new(template)
65
+ def initialize(template, helpers: [])
66
+ @erb = ERBPlus.new(template)
48
67
  @check_mode = false
49
68
  @check_missing = []
69
+ @helpers = helpers
50
70
  end
51
71
 
52
72
  def missing?
@@ -67,7 +87,7 @@ module Minfra
67
87
  end
68
88
 
69
89
  def render(params)
70
- @erb.result_with_hash(params)
90
+ @erb.result_with(hash: params, helpers: @helpers)
71
91
  end
72
92
 
73
93
  def method_missing(name)
@@ -78,6 +98,7 @@ module Minfra
78
98
  super
79
99
  end
80
100
  end
101
+
81
102
  end
82
103
  end
83
104
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Minfra
4
4
  module Cli
5
- VERSION = '4.0.0'
5
+ VERSION = '4.1.1'
6
6
  end
7
7
  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: 4.0.0
4
+ version: 4.1.1
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-27 00:00:00.000000000 Z
11
+ date: 2024-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor