itamae 1.12.6 → 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 +30 -0
- data/CHANGELOG.md +9 -2
- data/Rakefile +1 -1
- data/itamae.gemspec +1 -1
- data/lib/itamae/cli.rb +2 -2
- data/lib/itamae/runner.rb +13 -8
- data/lib/itamae/version.rb +1 -1
- data/spec/unit/lib/itamae/runner_spec.rb +44 -0
- metadata +9 -9
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
@@ -93,9 +93,11 @@ jobs:
|
|
93
93
|
- "2.6"
|
94
94
|
- "2.7"
|
95
95
|
- "3.0"
|
96
|
+
- "3.1"
|
96
97
|
rubyopt:
|
97
98
|
- ""
|
98
99
|
- "--jit"
|
100
|
+
- "--yjit"
|
99
101
|
image:
|
100
102
|
- ubuntu:trusty
|
101
103
|
exclude:
|
@@ -106,6 +108,19 @@ jobs:
|
|
106
108
|
rubyopt: "--jit"
|
107
109
|
- ruby: "2.5"
|
108
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"
|
109
124
|
|
110
125
|
env:
|
111
126
|
RUBYOPT: ${{ matrix.rubyopt }}
|
@@ -156,9 +171,11 @@ jobs:
|
|
156
171
|
- "2.6"
|
157
172
|
- "2.7"
|
158
173
|
- "3.0"
|
174
|
+
- "3.1"
|
159
175
|
rubyopt:
|
160
176
|
- ""
|
161
177
|
- "--jit"
|
178
|
+
- "--yjit"
|
162
179
|
exclude:
|
163
180
|
# --jit is available since MRI 2.6
|
164
181
|
- ruby: "2.3"
|
@@ -167,6 +184,19 @@ jobs:
|
|
167
184
|
rubyopt: "--jit"
|
168
185
|
- ruby: "2.5"
|
169
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"
|
170
200
|
|
171
201
|
env:
|
172
202
|
RUBYOPT: ${{ matrix.rubyopt }}
|
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,19 @@
|
|
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)
|
3
10
|
|
4
11
|
## v1.12.6
|
5
12
|
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.12.5...v1.12.6)
|
6
13
|
|
7
14
|
Bugfixes
|
8
15
|
|
9
|
-
- [Support Psych4.x](https://github.com/itamae-kitchen/itamae/pull/
|
16
|
+
- [Support Psych4.x](https://github.com/itamae-kitchen/itamae/pull/347)
|
10
17
|
|
11
18
|
## v1.12.5
|
12
19
|
[full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.12.4...v1.12.5)
|
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/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
|
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,20 +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
|
-
|
118
|
-
|
120
|
+
|
121
|
+
yaml = YAML.respond_to?(:unsafe_load) ? YAML.unsafe_load(File.read(path)) : YAML.load(File.read(path))
|
122
|
+
hash.deep_merge!(yaml || {})
|
119
123
|
end
|
120
124
|
|
121
|
-
|
125
|
+
# 'hash.dup' ensures that we pass a pristine Hash object without Hashie extensions
|
126
|
+
Node.new(hash.dup, @backend)
|
122
127
|
end
|
123
128
|
|
124
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,16 +1,16 @@
|
|
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
|
8
8
|
- Yusuke Nakamura
|
9
9
|
- sue445
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
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
|
@@ -200,7 +200,7 @@ dependencies:
|
|
200
200
|
- - ">="
|
201
201
|
- !ruby/object:Gem::Version
|
202
202
|
version: '0'
|
203
|
-
description:
|
203
|
+
description:
|
204
204
|
email:
|
205
205
|
- ryota.arai@gmail.com
|
206
206
|
- yusuke1994525@gmail.com
|
@@ -316,7 +316,7 @@ metadata:
|
|
316
316
|
homepage_uri: https://itamae.kitchen/
|
317
317
|
source_code_uri: https://github.com/itamae-kitchen/itamae
|
318
318
|
changelog_uri: https://github.com/itamae-kitchen/itamae/blob/master/CHANGELOG.md
|
319
|
-
post_install_message:
|
319
|
+
post_install_message:
|
320
320
|
rdoc_options: []
|
321
321
|
require_paths:
|
322
322
|
- lib
|
@@ -331,8 +331,8 @@ 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.
|
335
|
-
signing_key:
|
334
|
+
rubygems_version: 3.2.22
|
335
|
+
signing_key:
|
336
336
|
specification_version: 4
|
337
337
|
summary: Simple Configuration Management Tool
|
338
338
|
test_files:
|