minfra-cli 4.0.0 → 4.1.0

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: 559888088dd171a754ae0ccab6b6e8bf9ff0940e5cea2a64da90c83714250e1f
4
+ data.tar.gz: 212ed7b65798feda2b14a408d2f8066e73b21736ade7eed3a5fe5fafe50adbc6
5
5
  SHA512:
6
- metadata.gz: c8cea1d91de6744dd40eb6ae3d841b95fc0890723c953f9ac2af27b5c1e0e22af13be7bb1fc996bdd552cca9e1488e9eed24ae0f0c4d4479d97eb8a31ffd052a
7
- data.tar.gz: 2d427efb9533341b778d700f44d5f7596972331a4cb8e0f2beb6e23af83cad67ce36445102bd5de9251de9d0be16941772de4dfa2475918c42372b50d7d277ce
6
+ metadata.gz: 68ae0b701280177906cd79fbbebcd18b53380abb023f23ecb94c40b410ca0be47b6b2ffd2a8bad4e11b5f6e1b8430ff6aa4c3f2f1cde92e4e15d222fef001fc8
7
+ data.tar.gz: b47a78a9681d51bbde838d6d9527a5dfb7eea37f37d5cdcf78d28ab037e2bdfc85aca43ae72c3ddae3b1087ab82930f1d7d4097262f0c940ad79693995bed243
data/CHANGELOG.md CHANGED
@@ -1,3 +1,5 @@
1
+ # 4.1.0
2
+ * Minfra::Cli::Templater can now user helper modules
1
3
  # 4.0.0
2
4
  * in apply mode of secrets we prefix the name with the chart name
3
5
  # 3.1.0
@@ -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 = '4.0.0'
5
+ VERSION = '4.1.0'
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.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-27 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