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 +4 -4
- data/CHANGELOG.md +2 -0
- data/lib/minfra/cli/templater.rb +29 -7
- data/lib/minfra/cli/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 559888088dd171a754ae0ccab6b6e8bf9ff0940e5cea2a64da90c83714250e1f
|
4
|
+
data.tar.gz: 212ed7b65798feda2b14a408d2f8066e73b21736ade7eed3a5fe5fafe50adbc6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68ae0b701280177906cd79fbbebcd18b53380abb023f23ecb94c40b410ca0be47b6b2ffd2a8bad4e11b5f6e1b8430ff6aa4c3f2f1cde92e4e15d222fef001fc8
|
7
|
+
data.tar.gz: b47a78a9681d51bbde838d6d9527a5dfb7eea37f37d5cdcf78d28ab037e2bdfc85aca43ae72c3ddae3b1087ab82930f1d7d4097262f0c940ad79693995bed243
|
data/CHANGELOG.md
CHANGED
data/lib/minfra/cli/templater.rb
CHANGED
@@ -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 =
|
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.
|
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
|
data/lib/minfra/cli/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2024-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|