minfra-cli 4.0.0 → 4.1.1

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: 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