minfra-cli 4.0.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: 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