itamae 1.12.4 → 1.13.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/.github/workflows/test.yml +45 -1
- data/CHANGELOG.md +22 -1
- data/Rakefile +1 -1
- data/bin/itamae +0 -1
- data/itamae.gemspec +1 -1
- data/lib/itamae/cli.rb +7 -3
- data/lib/itamae/runner.rb +13 -7
- data/lib/itamae/version.rb +1 -1
- data/spec/unit/lib/itamae/runner_spec.rb +44 -0
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: adefcb08fb8611f035cf3f70d3d76ab4c2b1d012aef3f4489f33c4fb445a88fd
|
4
|
+
data.tar.gz: d4e7126f52fb0da4906a289025d9c73a2143b90a1297c570b81e3490985cd83e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a5206774cb5c387b79030ed32e9d12c096189a78725294d9516a1abf18199d9ca5d0339b75ae5815d0778f6372b29fef38c3c65b992deea7412729873995578
|
7
|
+
data.tar.gz: a8c13d073d29418c523a95501bc42c2864c1250def6a13936f744981eba9ddc4eb9b7ae59a7d66ba367c7799331ea0577fb81815ae7fb0fdc7d1b9825f530a05
|
data/.github/workflows/test.yml
CHANGED
@@ -27,9 +27,11 @@ jobs:
|
|
27
27
|
- "2.6"
|
28
28
|
- "2.7"
|
29
29
|
- "3.0"
|
30
|
+
- "3.1"
|
30
31
|
rubyopt:
|
31
32
|
- ""
|
32
33
|
- "--jit"
|
34
|
+
- "--yjit"
|
33
35
|
exclude:
|
34
36
|
# --jit is available since MRI 2.6
|
35
37
|
- ruby: "2.3"
|
@@ -38,7 +40,19 @@ jobs:
|
|
38
40
|
rubyopt: "--jit"
|
39
41
|
- ruby: "2.5"
|
40
42
|
rubyopt: "--jit"
|
41
|
-
|
43
|
+
# --yjit is available since MRI 3.1
|
44
|
+
- ruby: "2.3"
|
45
|
+
rubyopt: "--yjit"
|
46
|
+
- ruby: "2.4"
|
47
|
+
rubyopt: "--yjit"
|
48
|
+
- ruby: "2.5"
|
49
|
+
rubyopt: "--yjit"
|
50
|
+
- ruby: "2.6"
|
51
|
+
rubyopt: "--yjit"
|
52
|
+
- ruby: "2.7"
|
53
|
+
rubyopt: "--yjit"
|
54
|
+
- ruby: "3.0"
|
55
|
+
rubyopt: "--yjit"
|
42
56
|
env:
|
43
57
|
RUBYOPT: ${{ matrix.rubyopt }}
|
44
58
|
|
@@ -79,9 +93,11 @@ jobs:
|
|
79
93
|
- "2.6"
|
80
94
|
- "2.7"
|
81
95
|
- "3.0"
|
96
|
+
- "3.1"
|
82
97
|
rubyopt:
|
83
98
|
- ""
|
84
99
|
- "--jit"
|
100
|
+
- "--yjit"
|
85
101
|
image:
|
86
102
|
- ubuntu:trusty
|
87
103
|
exclude:
|
@@ -92,6 +108,19 @@ jobs:
|
|
92
108
|
rubyopt: "--jit"
|
93
109
|
- ruby: "2.5"
|
94
110
|
rubyopt: "--jit"
|
111
|
+
# --yjit is available since MRI 3.1
|
112
|
+
- ruby: "2.3"
|
113
|
+
rubyopt: "--yjit"
|
114
|
+
- ruby: "2.4"
|
115
|
+
rubyopt: "--yjit"
|
116
|
+
- ruby: "2.5"
|
117
|
+
rubyopt: "--yjit"
|
118
|
+
- ruby: "2.6"
|
119
|
+
rubyopt: "--yjit"
|
120
|
+
- ruby: "2.7"
|
121
|
+
rubyopt: "--yjit"
|
122
|
+
- ruby: "3.0"
|
123
|
+
rubyopt: "--yjit"
|
95
124
|
|
96
125
|
env:
|
97
126
|
RUBYOPT: ${{ matrix.rubyopt }}
|
@@ -142,9 +171,11 @@ jobs:
|
|
142
171
|
- "2.6"
|
143
172
|
- "2.7"
|
144
173
|
- "3.0"
|
174
|
+
- "3.1"
|
145
175
|
rubyopt:
|
146
176
|
- ""
|
147
177
|
- "--jit"
|
178
|
+
- "--yjit"
|
148
179
|
exclude:
|
149
180
|
# --jit is available since MRI 2.6
|
150
181
|
- ruby: "2.3"
|
@@ -153,6 +184,19 @@ jobs:
|
|
153
184
|
rubyopt: "--jit"
|
154
185
|
- ruby: "2.5"
|
155
186
|
rubyopt: "--jit"
|
187
|
+
# --yjit is available since MRI 3.1
|
188
|
+
- ruby: "2.3"
|
189
|
+
rubyopt: "--yjit"
|
190
|
+
- ruby: "2.4"
|
191
|
+
rubyopt: "--yjit"
|
192
|
+
- ruby: "2.5"
|
193
|
+
rubyopt: "--yjit"
|
194
|
+
- ruby: "2.6"
|
195
|
+
rubyopt: "--yjit"
|
196
|
+
- ruby: "2.7"
|
197
|
+
rubyopt: "--yjit"
|
198
|
+
- ruby: "3.0"
|
199
|
+
rubyopt: "--yjit"
|
156
200
|
|
157
201
|
env:
|
158
202
|
RUBYOPT: ${{ matrix.rubyopt }}
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,26 @@
|
|
1
1
|
## Unreleased
|
2
|
-
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.
|
2
|
+
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.13.0...master)
|
3
|
+
|
4
|
+
## v1.13.0
|
5
|
+
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.12.6...v1.13.0)
|
6
|
+
|
7
|
+
Improvements
|
8
|
+
|
9
|
+
- [Support repeatable "node_json" and "node_yaml" options](https://github.com/itamae-kitchen/itamae/pull/351)
|
10
|
+
|
11
|
+
## v1.12.6
|
12
|
+
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.12.5...v1.12.6)
|
13
|
+
|
14
|
+
Bugfixes
|
15
|
+
|
16
|
+
- [Support Psych4.x](https://github.com/itamae-kitchen/itamae/pull/347)
|
17
|
+
|
18
|
+
## v1.12.5
|
19
|
+
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.12.4...v1.12.5)
|
20
|
+
|
21
|
+
Bugfixes
|
22
|
+
|
23
|
+
- [Define exit_on_failure? to suppress thor's warning](https://github.com/itamae-kitchen/itamae/pull/344)
|
3
24
|
|
4
25
|
## v1.12.4
|
5
26
|
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.12.3...v1.12.4)
|
data/Rakefile
CHANGED
@@ -21,7 +21,7 @@ namespace :spec do
|
|
21
21
|
namespace :integration do
|
22
22
|
container_name = 'itamae'
|
23
23
|
|
24
|
-
task :all => ['spec:integration:docker' 'spec:integration:local']
|
24
|
+
task :all => ['spec:integration:docker', 'spec:integration:local']
|
25
25
|
|
26
26
|
desc "Run provision and specs"
|
27
27
|
task :docker => ["docker:boot", "docker:provision", "docker:serverspec", 'docker:clean_docker_container']
|
data/bin/itamae
CHANGED
data/itamae.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
27
27
|
spec.require_paths = ["lib"]
|
28
28
|
|
29
|
-
spec.add_runtime_dependency "thor"
|
29
|
+
spec.add_runtime_dependency "thor", ">= 1.0.0"
|
30
30
|
spec.add_runtime_dependency "specinfra", [">= 2.64.0", "< 3.0.0"]
|
31
31
|
spec.add_runtime_dependency "hashie"
|
32
32
|
spec.add_runtime_dependency "ansi"
|
data/lib/itamae/cli.rb
CHANGED
@@ -14,8 +14,8 @@ module Itamae
|
|
14
14
|
|
15
15
|
def self.define_exec_options
|
16
16
|
option :recipe_graph, type: :string, desc: "[EXPERIMENTAL] Write recipe dependency graph in DOT", banner: "PATH"
|
17
|
-
option :node_json, type: :string, aliases: ['-j']
|
18
|
-
option :node_yaml, type: :string, aliases: ['-y']
|
17
|
+
option :node_json, type: :string, aliases: ['-j'], repeatable: true
|
18
|
+
option :node_yaml, type: :string, aliases: ['-y'], repeatable: true
|
19
19
|
option :dry_run, type: :boolean, aliases: ['-n']
|
20
20
|
option :shell, type: :string, default: "/bin/sh"
|
21
21
|
option :login_shell, type: :boolean, default: false
|
@@ -31,11 +31,15 @@ module Itamae
|
|
31
31
|
def self.options
|
32
32
|
@itamae_options ||= super.dup.tap do |options|
|
33
33
|
if config = options[:config]
|
34
|
-
options.merge!(YAML.
|
34
|
+
options.merge!(YAML.respond_to?(:unsafe_load) ? YAML.unsafe_load(config) : YAML.load(config))
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
def self.exit_on_failure?
|
40
|
+
true
|
41
|
+
end
|
42
|
+
|
39
43
|
desc "local RECIPE [RECIPE...]", "Run Itamae locally"
|
40
44
|
define_exec_options
|
41
45
|
def local(*recipe_files)
|
data/lib/itamae/runner.rb
CHANGED
@@ -91,8 +91,10 @@ module Itamae
|
|
91
91
|
end
|
92
92
|
|
93
93
|
private
|
94
|
+
|
94
95
|
def create_node
|
95
96
|
hash = {}
|
97
|
+
hash.extend(Hashie::Extensions::DeepMerge)
|
96
98
|
|
97
99
|
if @options[:ohai]
|
98
100
|
unless @backend.run_command("which ohai", error: false).exit_status == 0
|
@@ -105,19 +107,23 @@ module Itamae
|
|
105
107
|
hash.merge!(JSON.parse(@backend.run_command("ohai 2>/dev/null").stdout))
|
106
108
|
end
|
107
109
|
|
108
|
-
|
109
|
-
path = File.expand_path(
|
110
|
+
@options.fetch(:node_json, []).each do |name|
|
111
|
+
path = File.expand_path(name)
|
110
112
|
Itamae.logger.info "Loading node data from #{path}..."
|
111
|
-
|
113
|
+
|
114
|
+
hash.deep_merge!(JSON.parse(File.read(path)))
|
112
115
|
end
|
113
116
|
|
114
|
-
|
115
|
-
path = File.expand_path(
|
117
|
+
@options.fetch(:node_yaml, []).each do |name|
|
118
|
+
path = File.expand_path(name)
|
116
119
|
Itamae.logger.info "Loading node data from #{path}..."
|
117
|
-
|
120
|
+
|
121
|
+
yaml = YAML.respond_to?(:unsafe_load) ? YAML.unsafe_load(File.read(path)) : YAML.load(File.read(path))
|
122
|
+
hash.deep_merge!(yaml || {})
|
118
123
|
end
|
119
124
|
|
120
|
-
|
125
|
+
# 'hash.dup' ensures that we pass a pristine Hash object without Hashie extensions
|
126
|
+
Node.new(hash.dup, @backend)
|
121
127
|
end
|
122
128
|
|
123
129
|
def prepare_handler
|
data/lib/itamae/version.rb
CHANGED
@@ -28,5 +28,49 @@ module Itamae
|
|
28
28
|
described_class.run(recipes, :local, {})
|
29
29
|
end
|
30
30
|
end
|
31
|
+
|
32
|
+
describe "#initialize" do
|
33
|
+
context "with multiple node_json and node_yaml files" do
|
34
|
+
def build_temp_file(data)
|
35
|
+
file = Tempfile.new
|
36
|
+
file.write data
|
37
|
+
file.close
|
38
|
+
file
|
39
|
+
end
|
40
|
+
|
41
|
+
it "merges hashes and overwrites arrays" do
|
42
|
+
json_one = build_temp_file %({ "vars_from_json": { "one": 1 }, "shared": { "foo": true } })
|
43
|
+
json_two = build_temp_file %({ "vars_from_json": { "two": 2 } })
|
44
|
+
yaml_one = build_temp_file %(
|
45
|
+
vars_from_yaml:
|
46
|
+
three: 3
|
47
|
+
array:
|
48
|
+
- 123
|
49
|
+
shared:
|
50
|
+
bar: false
|
51
|
+
)
|
52
|
+
yaml_two = build_temp_file %(
|
53
|
+
vars_from_yaml:
|
54
|
+
four: 4
|
55
|
+
array:
|
56
|
+
- 456
|
57
|
+
)
|
58
|
+
|
59
|
+
runner = described_class.new(
|
60
|
+
spy,
|
61
|
+
node_json: [json_one.path, json_two.path],
|
62
|
+
node_yaml: [yaml_one.path, yaml_two.path]
|
63
|
+
)
|
64
|
+
|
65
|
+
expect(runner.node[:vars_from_json][:one]).to eq 1
|
66
|
+
expect(runner.node[:vars_from_json][:two]).to eq 2
|
67
|
+
expect(runner.node[:vars_from_yaml][:three]).to eq 3
|
68
|
+
expect(runner.node[:vars_from_yaml][:four]).to eq 4
|
69
|
+
expect(runner.node[:array]).to eq [456]
|
70
|
+
expect(runner.node[:shared][:foo]).to eq true
|
71
|
+
expect(runner.node[:shared][:bar]).to eq false
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
31
75
|
end
|
32
76
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: itamae
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryota Arai
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2022-05-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: thor
|
@@ -18,14 +18,14 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 1.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version:
|
28
|
+
version: 1.0.0
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: specinfra
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -331,7 +331,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
331
331
|
- !ruby/object:Gem::Version
|
332
332
|
version: '0'
|
333
333
|
requirements: []
|
334
|
-
rubygems_version: 3.2.
|
334
|
+
rubygems_version: 3.2.22
|
335
335
|
signing_key:
|
336
336
|
specification_version: 4
|
337
337
|
summary: Simple Configuration Management Tool
|