itamae 1.10.10 → 1.12.1

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: a27b553f519a4e36fdc40534d8033528f3dfbbca42133fed38c8af9bafc0234c
4
- data.tar.gz: d3b9da92d9ebaa0c4f3ceff9f483944e1fa02d2a28741c921c3b16f283b083cf
3
+ metadata.gz: a87b38ab15d48a077ad91bb8b3ff7fe8a07df9068a19ec5fbec2b29f4294869f
4
+ data.tar.gz: 6ad7b7f90b63f5d4d44cba8a7335259b55c539f04775812ca1ee9906c91d677c
5
5
  SHA512:
6
- metadata.gz: 5cf3758a3778d8a22128d08263f03bbf10c2ea53246128013786bda0c44549a14b89792798db43e5de573264fe06a5c3e8049cf52837db46d086e84f528c10c6
7
- data.tar.gz: 86f33c85a7deed7cb93993abe8e811e0dd6e84861350ac48f7fae462a6fdca9e3c9b9a1c6ccf8438af326fc77829a5f0eb1d4e848aed6efe36d29739393467f3
6
+ metadata.gz: bf4bfdb3a108826702395d81176b8b75282809868a6c6562e6e1301c7bdef7633c72358f658b62dee07795aa49d2867d706f4ee499cc2ab5c1d0a9f5ebf8edf6
7
+ data.tar.gz: cc6ec5583ad859f9c09f81aafb1e5a909f9ebbe26c0874a28ae177d5840e1c62cbbcd4f8e176d49fd892cdf166473f7f58243bd5abcfe17164040d743615f1a0
@@ -0,0 +1,200 @@
1
+ name: test
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request:
8
+ types:
9
+ - opened
10
+ - synchronize
11
+ - reopened
12
+
13
+ jobs:
14
+ unit:
15
+ runs-on: ubuntu-latest
16
+
17
+ strategy:
18
+ fail-fast: false
19
+
20
+ matrix:
21
+ ruby:
22
+ - "2.3"
23
+ - "2.4"
24
+ - "2.5"
25
+ - "2.6"
26
+ - "2.7"
27
+ - "3.0"
28
+ rubyopt:
29
+ - ""
30
+ - "--jit"
31
+ exclude:
32
+ # --jit is available since MRI 2.6
33
+ - ruby: "2.3"
34
+ rubyopt: "--jit"
35
+ - ruby: "2.4"
36
+ rubyopt: "--jit"
37
+ - ruby: "2.5"
38
+ rubyopt: "--jit"
39
+
40
+ env:
41
+ RUBYOPT: ${{ matrix.rubyopt }}
42
+
43
+ steps:
44
+ - uses: actions/checkout@v2
45
+
46
+ - uses: ruby/setup-ruby@v1
47
+ with:
48
+ ruby-version: ${{ matrix.ruby }}
49
+ bundler-cache: true
50
+
51
+ - run: bundle update
52
+
53
+ - run: bundle exec rake spec:unit
54
+
55
+ - name: Slack Notification (not success)
56
+ uses: lazy-actions/slatify@master
57
+ if: "! success()"
58
+ continue-on-error: true
59
+ with:
60
+ job_name: ${{ format('*unit* ({0},{1})', matrix.ruby, matrix.rubyopt) }}
61
+ type: ${{ job.status }}
62
+ icon_emoji: ":octocat:"
63
+ url: ${{ secrets.SLACK_WEBHOOK }}
64
+ token: ${{ secrets.GITHUB_TOKEN }}
65
+
66
+ integration-docker:
67
+ runs-on: ubuntu-latest
68
+
69
+ strategy:
70
+ fail-fast: false
71
+
72
+ matrix:
73
+ ruby:
74
+ - "2.3"
75
+ - "2.4"
76
+ - "2.5"
77
+ - "2.6"
78
+ - "2.7"
79
+ - "3.0"
80
+ rubyopt:
81
+ - ""
82
+ - "--jit"
83
+ image:
84
+ - ubuntu:trusty
85
+ exclude:
86
+ # --jit is available since MRI 2.6
87
+ - ruby: "2.3"
88
+ rubyopt: "--jit"
89
+ - ruby: "2.4"
90
+ rubyopt: "--jit"
91
+ - ruby: "2.5"
92
+ rubyopt: "--jit"
93
+
94
+ env:
95
+ RUBYOPT: ${{ matrix.rubyopt }}
96
+ TEST_IMAGE: ${{ matrix.image }}
97
+
98
+ steps:
99
+ - uses: actions/checkout@v2
100
+
101
+ - uses: ruby/setup-ruby@v1
102
+ with:
103
+ ruby-version: ${{ matrix.ruby }}
104
+ bundler-cache: true
105
+
106
+ - run: bundle update
107
+
108
+ - run: bundle exec rake spec:integration:docker:boot
109
+
110
+ - run: bundle exec rake spec:integration:docker:provision
111
+ env:
112
+ # FIXME: avoid error for "Command `chmod 777 /tmp/itamae_tmp` failed. (exit status: 1)"
113
+ ITAMAE_TMP_DIR: /var/tmp/itamae_tmp
114
+
115
+ - run: bundle exec rake spec:integration:docker:serverspec
116
+ - run: bundle exec rake spec:integration:docker:clean_docker_container
117
+
118
+ - name: Slack Notification (not success)
119
+ uses: lazy-actions/slatify@master
120
+ if: "! success()"
121
+ continue-on-error: true
122
+ with:
123
+ job_name: ${{ format('*integration-docker* ({0},{1},{2})', matrix.ruby, matrix.rubyopt, matrix.image) }}
124
+ type: ${{ job.status }}
125
+ icon_emoji: ":octocat:"
126
+ url: ${{ secrets.SLACK_WEBHOOK }}
127
+ token: ${{ secrets.GITHUB_TOKEN }}
128
+
129
+ integration-local:
130
+ runs-on: ubuntu-latest
131
+
132
+ strategy:
133
+ fail-fast: false
134
+
135
+ matrix:
136
+ ruby:
137
+ - "2.3"
138
+ - "2.4"
139
+ - "2.5"
140
+ - "2.6"
141
+ - "2.7"
142
+ - "3.0"
143
+ rubyopt:
144
+ - ""
145
+ - "--jit"
146
+ exclude:
147
+ # --jit is available since MRI 2.6
148
+ - ruby: "2.3"
149
+ rubyopt: "--jit"
150
+ - ruby: "2.4"
151
+ rubyopt: "--jit"
152
+ - ruby: "2.5"
153
+ rubyopt: "--jit"
154
+
155
+ env:
156
+ RUBYOPT: ${{ matrix.rubyopt }}
157
+
158
+ steps:
159
+ - uses: actions/checkout@v2
160
+
161
+ - uses: ruby/setup-ruby@v1
162
+ with:
163
+ ruby-version: ${{ matrix.ruby }}
164
+ bundler-cache: true
165
+
166
+ - run: bundle update
167
+
168
+ - run: bundle exec rake spec:integration:local:main
169
+ - run: bundle exec rake spec:integration:local:ordinary_user
170
+
171
+ - name: Slack Notification (not success)
172
+ uses: lazy-actions/slatify@master
173
+ if: "! success()"
174
+ continue-on-error: true
175
+ with:
176
+ job_name: ${{ format('*integration-local* ({0},{1})', matrix.ruby, matrix.rubyopt) }}
177
+ type: ${{ job.status }}
178
+ icon_emoji: ":octocat:"
179
+ url: ${{ secrets.SLACK_WEBHOOK }}
180
+ token: ${{ secrets.GITHUB_TOKEN }}
181
+
182
+ notify:
183
+ needs:
184
+ - unit
185
+ - integration-docker
186
+ - integration-local
187
+
188
+ runs-on: ubuntu-latest
189
+
190
+ steps:
191
+ - name: Slack Notification (success)
192
+ uses: lazy-actions/slatify@master
193
+ if: always()
194
+ continue-on-error: true
195
+ with:
196
+ job_name: '*notify*'
197
+ type: ${{ job.status }}
198
+ icon_emoji: ":octocat:"
199
+ url: ${{ secrets.SLACK_WEBHOOK }}
200
+ token: ${{ secrets.GITHUB_TOKEN }}
data/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  ## Unreleased
2
- [full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.10.10...master)
2
+ [full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.12.1...master)
3
+
4
+ ## v1.12.1
5
+ [full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.12.0...v1.12.1)
6
+
7
+ Improvements
8
+
9
+ - [Allow defining top-level modules without `::`](https://github.com/itamae-kitchen/itamae/pull/332)
10
+
11
+ ## v1.12.0
12
+ [full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.11.2...v1.12.0)
13
+
14
+ Improvements
15
+
16
+ - [Add `--tmp-dir` to cli options](https://github.com/itamae-kitchen/itamae/pull/331)
17
+
18
+ ## v1.11.2
19
+ [full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.11.1...v1.11.2)
20
+
21
+ Bugfixes
22
+
23
+ - [Support thor-1.1.0 (by @chaaaaarlotte)](https://github.com/itamae-kitchen/itamae/pull/329)
24
+
25
+ ## v1.11.1
26
+ [full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.11.0...v1.11.1)
27
+
28
+ Improvements
29
+
30
+ - [Support Ruby 3.0.0](https://github.com/itamae-kitchen/itamae/pull/326)
31
+ - [file: improve diff output (by @terceiro)](https://github.com/itamae-kitchen/itamae/pull/327)
32
+
33
+ ## v1.11.0
34
+ [full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.10.10...v1.11.0)
35
+
36
+ Improvements
37
+
38
+ - [file: add support for sensitive files (by @terceiro)](https://github.com/itamae-kitchen/itamae/pull/325)
3
39
 
4
40
  ## v1.10.10
5
41
  [full changelog](https://github.com/itamae-kitchen/itamae/compare/v1.10.9...v1.10.10)
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # [![](https://raw.githubusercontent.com/itamae-kitchen/itamae-logos/master/small/FA-Itamae-horizontal-01-180x72.png)](https://github.com/itamae-kitchen/itamae)
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/itamae.svg)](http://badge.fury.io/rb/itamae) [![Code Climate](https://codeclimate.com/github/ryotarai/itamae/badges/gpa.svg)](https://codeclimate.com/github/ryotarai/itamae) [![Build Status](https://travis-ci.org/itamae-kitchen/itamae.svg?branch=master)](https://travis-ci.org/itamae-kitchen/itamae) [![Slack](https://img.shields.io/badge/slack-join-blue.svg)](https://join.slack.com/t/itamae/shared_invite/enQtNTExNTI3ODM1NTY5LTM5MWJlZTgwODE0YTUwMThiNzZjN2I1MGNlZjE2NjlmNzg5NTNlOTliMDhkNDNmNTQ2ZTgwMzZjNjI5NDJiZGI)
3
+ [![Gem Version](https://badge.fury.io/rb/itamae.svg)](http://badge.fury.io/rb/itamae) [![Code Climate](https://codeclimate.com/github/ryotarai/itamae/badges/gpa.svg)](https://codeclimate.com/github/ryotarai/itamae) [![Build Status](https://github.com/itamae-kitchen/itamae/workflows/test/badge.svg?branch=master)](https://github.com/itamae-kitchen/itamae/actions?query=workflow%3Atest) [![Slack](https://img.shields.io/badge/slack-join-blue.svg)](https://join.slack.com/t/itamae/shared_invite/enQtNTExNTI3ODM1NTY5LTM5MWJlZTgwODE0YTUwMThiNzZjN2I1MGNlZjE2NjlmNzg5NTNlOTliMDhkNDNmNTQ2ZTgwMzZjNjI5NDJiZGI)
4
4
 
5
5
  Simple and lightweight configuration management tool inspired by Chef.
6
6
 
@@ -97,4 +97,3 @@ If you have a problem, please [create an issue](https://github.com/itamae-kitche
97
97
  3. Commit your changes (`git commit -am 'Add some feature'`)
98
98
  4. Push to the branch (`git push origin my-new-feature`)
99
99
  5. Create new Pull Request
100
-
data/Rakefile CHANGED
@@ -10,6 +10,8 @@ end
10
10
  desc 'Run unit and integration specs.'
11
11
  task :spec => ['spec:unit', 'spec:integration:all']
12
12
 
13
+ TEST_IMAGE = ENV["TEST_IMAGE"] || "ubuntu:trusty"
14
+
13
15
  namespace :spec do
14
16
  RSpec::Core::RakeTask.new("unit") do |task|
15
17
  task.ruby_opts = '-I ./spec/unit'
@@ -17,60 +19,54 @@ namespace :spec do
17
19
  end
18
20
 
19
21
  namespace :integration do
20
- targets = ["ubuntu:trusty"]
21
22
  container_name = 'itamae'
22
23
 
23
- task :all => targets + ['spec:integration:local']
24
+ task :all => ['spec:integration:docker' 'spec:integration:local']
24
25
 
25
- targets.each do |target|
26
- desc "Run provision and specs to #{target}"
27
- task target => ["docker:#{target}", "provision:#{target}", "serverspec:#{target}", 'clean_docker_container']
26
+ desc "Run provision and specs"
27
+ task :docker => ["docker:boot", "docker:provision", "docker:serverspec", 'docker:clean_docker_container']
28
28
 
29
- namespace :docker do
30
- desc "Run docker for #{target}"
31
- task target do
32
- sh "docker run --privileged -d --name #{container_name} #{target} /sbin/init"
33
- end
29
+ namespace :docker do
30
+ desc "Run docker"
31
+ task :boot do
32
+ sh "docker run --privileged -d --name #{container_name} #{TEST_IMAGE} /sbin/init"
34
33
  end
35
34
 
36
- namespace :provision do
37
- desc "Run itamae to #{target}"
38
- task target do
39
- suites = [
40
- [
41
- "spec/integration/recipes/default.rb",
42
- "spec/integration/recipes/default2.rb",
43
- "spec/integration/recipes/redefine.rb",
44
- "spec/integration/recipes/docker.rb",
45
- ],
46
- [
47
- "--dry-run",
48
- "spec/integration/recipes/dry_run.rb",
49
- ],
50
- ]
51
- suites.each do |suite|
52
- cmd = %w!bundle exec ruby -w bin/itamae docker!
53
- cmd << "-l" << (ENV['LOG_LEVEL'] || 'debug')
54
- cmd << "-j" << "spec/integration/recipes/node.json"
55
- cmd << "--container" << container_name
56
- cmd << "--tag" << "itamae:latest"
57
- cmd += suite
35
+ desc "Run itamae"
36
+ task :provision do
37
+ suites = [
38
+ [
39
+ "spec/integration/recipes/default.rb",
40
+ "spec/integration/recipes/default2.rb",
41
+ "spec/integration/recipes/redefine.rb",
42
+ "spec/integration/recipes/docker.rb",
43
+ ],
44
+ [
45
+ "--dry-run",
46
+ "spec/integration/recipes/dry_run.rb",
47
+ ],
48
+ ]
49
+ suites.each do |suite|
50
+ cmd = %w!bundle exec ruby -w bin/itamae docker!
51
+ cmd << "-l" << (ENV['LOG_LEVEL'] || 'debug')
52
+ cmd << "-j" << "spec/integration/recipes/node.json"
53
+ cmd << "--container" << container_name
54
+ cmd << "--tag" << "itamae:latest"
55
+ cmd << "--tmp-dir" << (ENV['ITAMAE_TMP_DIR'] || '/tmp/itamae_tmp')
56
+ cmd += suite
58
57
 
59
- p cmd
60
- unless system(*cmd)
61
- raise "#{cmd} failed"
62
- end
58
+ p cmd
59
+ unless system(*cmd)
60
+ raise "#{cmd} failed"
63
61
  end
64
62
  end
65
63
  end
66
64
 
67
- namespace :serverspec do
68
- desc "Run serverspec tests to #{target}"
69
- RSpec::Core::RakeTask.new(target.to_sym) do |t|
70
- ENV['DOCKER_CONTAINER'] = container_name
71
- t.ruby_opts = '-I ./spec/integration'
72
- t.pattern = "spec/integration/{default,docker}_spec.rb"
73
- end
65
+ desc "Run serverspec tests"
66
+ RSpec::Core::RakeTask.new(:serverspec) do |t|
67
+ ENV['DOCKER_CONTAINER'] = container_name
68
+ t.ruby_opts = '-I ./spec/integration'
69
+ t.pattern = "spec/integration/{default,docker}_spec.rb"
74
70
  end
75
71
 
76
72
  desc 'Clean a docker container for test'
data/itamae.gemspec CHANGED
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
37
37
  spec.add_development_dependency "rspec", "~> 3.0"
38
38
  spec.add_development_dependency "serverspec", "~> 2.1"
39
39
  spec.add_development_dependency "pry-byebug"
40
- spec.add_development_dependency "docker-api", "~> 1.20"
40
+ spec.add_development_dependency "docker-api", "~> 2"
41
41
  spec.add_development_dependency "fakefs"
42
42
  spec.add_development_dependency "fluent-logger"
43
43
  end
data/lib/itamae/cli.rb CHANGED
@@ -25,6 +25,15 @@ module Itamae
25
25
  option :log_level, type: :string, aliases: ['-l'], default: 'info'
26
26
  option :color, type: :boolean, default: true
27
27
  option :config, type: :string, aliases: ['-c']
28
+ option :tmp_dir, type: :string, aliases: ['-t'], default: "/tmp/itamae_tmp"
29
+ end
30
+
31
+ def self.options
32
+ @itamae_options ||= super.dup.tap do |options|
33
+ if config = options[:config]
34
+ options.merge!(YAML.load_file(config))
35
+ end
36
+ end
28
37
  end
29
38
 
30
39
  desc "local RECIPE [RECIPE...]", "Run Itamae locally"
@@ -117,14 +126,6 @@ module Itamae
117
126
  end
118
127
 
119
128
  private
120
- def options
121
- @itamae_options ||= super.dup.tap do |options|
122
- if config = options[:config]
123
- options.merge!(YAML.load_file(config))
124
- end
125
- end
126
- end
127
-
128
129
  def validate_generate_target!(command, target)
129
130
  unless GENERATE_TARGETS.include?(target)
130
131
  msg = %Q!ERROR: "itamae #{command}" was called with "#{target}" !
data/lib/itamae/node.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'hashie'
2
2
  require 'json'
3
3
  require 'schash'
4
+ require 'itamae/mash'
4
5
 
5
6
  module Itamae
6
7
  class Node
data/lib/itamae/recipe.rb CHANGED
@@ -53,7 +53,7 @@ module Itamae
53
53
 
54
54
  def load(vars = {})
55
55
  context = EvalContext.new(self, vars)
56
- context.instance_eval(File.read(path), path, 1)
56
+ InstanceEval.new(File.read(path), path, 1, context: context).call
57
57
  end
58
58
 
59
59
  def run
@@ -151,6 +151,25 @@ module Itamae
151
151
  end
152
152
  end
153
153
 
154
+ class InstanceEval
155
+ def initialize(src, path, lineno, context:)
156
+ # Using instance_eval + eval to allow top-level class/module definition without `::`.
157
+ # To pass args without introducing any local/instance variables, this code is also eval-ed.
158
+ @code = <<-RUBY
159
+ @context.instance_eval do
160
+ eval(#{src.dump}, nil, #{path.dump}, #{lineno})
161
+ end
162
+ RUBY
163
+ @context = context
164
+ end
165
+
166
+ # This method has no local variables to avoid spilling them to recipes.
167
+ def call
168
+ eval(@code)
169
+ end
170
+ end
171
+ private_constant :InstanceEval
172
+
154
173
  class RecipeFromDefinition < Recipe
155
174
  attr_accessor :definition
156
175
 
@@ -4,6 +4,7 @@ module Itamae
4
4
  define_attribute :action, default: :create
5
5
  define_attribute :path, type: String, default_name: true
6
6
  define_attribute :content, type: String, default: nil
7
+ define_attribute :sensitive, default: false
7
8
  define_attribute :mode, type: String
8
9
  define_attribute :owner, type: String
9
10
  define_attribute :group, type: String
@@ -156,9 +157,14 @@ module Itamae
156
157
  end
157
158
 
158
159
  def show_content_diff
160
+ if attributes.sensitive
161
+ Itamae.logger.info("diff exists, but not displaying sensitive content")
162
+ return
163
+ end
164
+
159
165
  if attributes.modified
160
166
  Itamae.logger.info "diff:"
161
- diff = run_command(["diff", "-u", compare_to, @temppath], error: false)
167
+ diff = run_command(["diff", "-u", "--label=#{attributes.path} (BEFORE)", compare_to, "--label=#{attributes.path} (AFTER)", @temppath], error: false)
162
168
  diff.stdout.each_line do |line|
163
169
  color = if line.start_with?('+')
164
170
  :green
data/lib/itamae/runner.rb CHANGED
@@ -30,7 +30,7 @@ module Itamae
30
30
  prepare_handler
31
31
 
32
32
  @node = create_node
33
- @tmpdir = "/tmp/itamae_tmp"
33
+ @tmpdir = options[:tmp_dir]
34
34
  @children = RecipeChildren.new
35
35
  @diff = false
36
36
 
@@ -1,3 +1,3 @@
1
1
  module Itamae
2
- VERSION = "1.10.10"
2
+ VERSION = "1.12.1"
3
3
  end
@@ -333,3 +333,21 @@ describe file('/tmp/empty_file3') do
333
333
  it { should be_file }
334
334
  its(:content) { should eq "" }
335
335
  end
336
+
337
+ describe file('/tmp/toplevel_module') do
338
+ it { should exist }
339
+ it { should be_file }
340
+ its(:content) { should eq "helper" }
341
+ end
342
+
343
+ describe file('/tmp/local_variables') do
344
+ it { should exist }
345
+ it { should be_file }
346
+ its(:content) { should eq "[]" }
347
+ end
348
+
349
+ describe file('/tmp/instance_variables') do
350
+ it { should exist }
351
+ it { should be_file }
352
+ its(:content) { should eq "[:@recipe]" } # backward compatibility
353
+ end
@@ -556,3 +556,9 @@ unless v1 == v2 && v2 == v3 && v1 =~ /\A\d+kB\z/
556
556
  raise "failed to fetch host inventory value (#{v1}, #{v2}, #{v3})"
557
557
  end
558
558
 
559
+ include_recipe "toplevel_module"
560
+ file "/tmp/toplevel_module" do
561
+ content ToplevelModule.helper
562
+ end
563
+
564
+ include_recipe "variables"
@@ -0,0 +1,6 @@
1
+ # Testing you don't need to write `module ::ToplevelModule`
2
+ module ToplevelModule
3
+ def self.helper
4
+ "helper"
5
+ end
6
+ end
@@ -0,0 +1,14 @@
1
+ node.reverse_merge!(
2
+ variables: {
3
+ lvars: binding.local_variables,
4
+ ivars: instance_variables,
5
+ }
6
+ )
7
+
8
+ file "/tmp/local_variables" do
9
+ content node[:variables][:lvars].to_s
10
+ end
11
+
12
+ file "/tmp/instance_variables" do
13
+ content node[:variables][:ivars].to_s
14
+ 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.10.10
4
+ version: 1.12.1
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: 2020-07-07 00:00:00.000000000 Z
13
+ date: 2021-02-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: thor
@@ -164,14 +164,14 @@ dependencies:
164
164
  requirements:
165
165
  - - "~>"
166
166
  - !ruby/object:Gem::Version
167
- version: '1.20'
167
+ version: '2'
168
168
  type: :development
169
169
  prerelease: false
170
170
  version_requirements: !ruby/object:Gem::Requirement
171
171
  requirements:
172
172
  - - "~>"
173
173
  - !ruby/object:Gem::Version
174
- version: '1.20'
174
+ version: '2'
175
175
  - !ruby/object:Gem::Dependency
176
176
  name: fakefs
177
177
  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
@@ -210,9 +210,9 @@ executables:
210
210
  extensions: []
211
211
  extra_rdoc_files: []
212
212
  files:
213
+ - ".github/workflows/test.yml"
213
214
  - ".gitignore"
214
215
  - ".rspec"
215
- - ".travis.yml"
216
216
  - CHANGELOG.md
217
217
  - Gemfile
218
218
  - LICENSE.txt
@@ -293,6 +293,8 @@ files:
293
293
  - spec/integration/recipes/redefine.rb
294
294
  - spec/integration/recipes/templates/empty_file.erb
295
295
  - spec/integration/recipes/templates/template_auto.erb
296
+ - spec/integration/recipes/toplevel_module.rb
297
+ - spec/integration/recipes/variables.rb
296
298
  - spec/integration/spec_helper.rb
297
299
  - spec/unit/lib/itamae/backend_spec.rb
298
300
  - spec/unit/lib/itamae/handler/base_spec.rb
@@ -314,7 +316,7 @@ metadata:
314
316
  homepage_uri: https://itamae.kitchen/
315
317
  source_code_uri: https://github.com/itamae-kitchen/itamae
316
318
  changelog_uri: https://github.com/itamae-kitchen/itamae/blob/master/CHANGELOG.md
317
- post_install_message:
319
+ post_install_message:
318
320
  rdoc_options: []
319
321
  require_paths:
320
322
  - lib
@@ -329,8 +331,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
329
331
  - !ruby/object:Gem::Version
330
332
  version: '0'
331
333
  requirements: []
332
- rubygems_version: 3.0.3
333
- signing_key:
334
+ rubygems_version: 3.2.3
335
+ signing_key:
334
336
  specification_version: 4
335
337
  summary: Simple Configuration Management Tool
336
338
  test_files:
@@ -357,6 +359,8 @@ test_files:
357
359
  - spec/integration/recipes/redefine.rb
358
360
  - spec/integration/recipes/templates/empty_file.erb
359
361
  - spec/integration/recipes/templates/template_auto.erb
362
+ - spec/integration/recipes/toplevel_module.rb
363
+ - spec/integration/recipes/variables.rb
360
364
  - spec/integration/spec_helper.rb
361
365
  - spec/unit/lib/itamae/backend_spec.rb
362
366
  - spec/unit/lib/itamae/handler/base_spec.rb
data/.travis.yml DELETED
@@ -1,38 +0,0 @@
1
- language: ruby
2
- sudo: required
3
- dist: xenial
4
- services:
5
- - docker
6
- rvm:
7
- - 2.3
8
- - 2.4
9
- - 2.5
10
- - 2.6
11
- - 2.7
12
- - ruby-head
13
- bundler_args: "--jobs=4 --retry=3"
14
- cache:
15
- bundler: true
16
-
17
- before_install:
18
- - travis_retry gem install bundler --no-document || travis_retry gem install bundler --no-document -v 1.17.3
19
-
20
- script:
21
- - RUBYOPT=$SPEC_RUBYOPT bundle exec rake spec
22
- notifications:
23
- email: false
24
- slack:
25
- secure: PcecHsVS6lw89K5PllW8xFlzu0d04p6lYfxlUZL0/yp9flAczElJME4RshSMSkbnu5e2Iw8KUA2xB1jkAzDo9qYoXveaKyjkFUOb1ZxYIVxzzfoDDwUNTMmSoyjZjvbeBUcpxxmxy6nXa3zS+gA2ohqWhS9WTTlTqyM5RriDjZ8=
26
- matrix:
27
- allow_failures:
28
- - rvm: ruby-head
29
- include:
30
- - rvm: 2.6
31
- env: SPEC_RUBYOPT="--jit"
32
- - rvm: 2.7
33
- env: SPEC_RUBYOPT="--jit"
34
- - rvm: ruby-head
35
- env: SPEC_RUBYOPT="--jit"
36
- branches:
37
- only:
38
- - master