itamae 1.0.0.beta10 → 1.0.0.beta11
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/Rakefile +20 -0
- data/lib/itamae.rb +1 -1
- data/lib/itamae/recipe.rb +18 -8
- data/lib/itamae/{resource_collection.rb → recipe_dependencies.rb} +15 -3
- data/lib/itamae/resource/base.rb +4 -7
- data/lib/itamae/version.txt +1 -1
- data/spec/integration/default_spec.rb +4 -0
- data/spec/integration/recipes/default.rb +2 -0
- data/spec/integration/recipes/included.rb +1 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e79cccb302b213dead194d1fb5a47ee4421325d
|
4
|
+
data.tar.gz: 7ed4180528acd9fb5e0ae50834f85e44aeb91a7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8bf822b67930b8281bfae4eef594eec40c592f65b99086a566fc2c9ef0cfa6d9497ca9cbd34c6ef1827f8353785cd298502f5a4cc079c9b178a7cb437ee44267
|
7
|
+
data.tar.gz: 67b3ac8336ae73558e746595212b21301356d4184e2f33486ef3381b052b42698adf24a6051c27d515b1adf1d1e5ef2f872af9ef6c61156c491b0e0b84b6d79a
|
data/Rakefile
CHANGED
@@ -65,3 +65,23 @@ namespace :spec do
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
+
namespace :release do
|
69
|
+
desc "Bump up version and commit"
|
70
|
+
task :version_up do
|
71
|
+
version_file = File.expand_path("lib/itamae/version.txt")
|
72
|
+
current_version = File.read(version_file).strip
|
73
|
+
|
74
|
+
if /\A(.+)(\d+)\z/ =~ current_version
|
75
|
+
next_version = "#{$1}#{$2.to_i + 1}"
|
76
|
+
else
|
77
|
+
raise "Invalid version"
|
78
|
+
end
|
79
|
+
|
80
|
+
open(version_file, "w") do |f|
|
81
|
+
f.write next_version
|
82
|
+
end
|
83
|
+
system "git add #{version_file}"
|
84
|
+
system "git commit -m 'Bump up version'"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
data/lib/itamae.rb
CHANGED
data/lib/itamae/recipe.rb
CHANGED
@@ -4,16 +4,16 @@ module Itamae
|
|
4
4
|
class Recipe
|
5
5
|
attr_reader :path
|
6
6
|
attr_reader :runner
|
7
|
-
attr_reader :
|
7
|
+
attr_reader :dependencies
|
8
8
|
attr_reader :delayed_actions
|
9
9
|
|
10
10
|
def initialize(runner, path)
|
11
11
|
@runner = runner
|
12
12
|
@path = path
|
13
|
-
@
|
13
|
+
@dependencies = RecipeDependencies.new
|
14
14
|
@delayed_actions = []
|
15
15
|
|
16
|
-
|
16
|
+
load_dependencies
|
17
17
|
end
|
18
18
|
|
19
19
|
def node
|
@@ -21,9 +21,13 @@ module Itamae
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def run(options = {})
|
24
|
-
@
|
25
|
-
|
26
|
-
|
24
|
+
@dependencies.each do |resource|
|
25
|
+
case resource
|
26
|
+
when Resource::Base
|
27
|
+
resource.run(nil, dry_run: options[:dry_run])
|
28
|
+
when Recipe
|
29
|
+
resource.run(options)
|
30
|
+
end
|
27
31
|
end
|
28
32
|
|
29
33
|
@delayed_actions.uniq.each do |action, resource|
|
@@ -33,14 +37,20 @@ module Itamae
|
|
33
37
|
|
34
38
|
private
|
35
39
|
|
36
|
-
def
|
40
|
+
def load_dependencies
|
37
41
|
instance_eval(File.read(@path), @path, 1)
|
38
42
|
end
|
39
43
|
|
40
44
|
def method_missing(method, name, &block)
|
41
45
|
klass = Resource.get_resource_class(method)
|
42
46
|
resource = klass.new(self, name, &block)
|
43
|
-
@
|
47
|
+
@dependencies << resource
|
48
|
+
end
|
49
|
+
|
50
|
+
def include_recipe(target)
|
51
|
+
target = ::File.expand_path(target, File.dirname(@path))
|
52
|
+
recipe = Recipe.new(@runner, target)
|
53
|
+
@dependencies << recipe
|
44
54
|
end
|
45
55
|
end
|
46
56
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module Itamae
|
2
|
-
class
|
2
|
+
class RecipeDependencies < Array
|
3
3
|
NotFoundError = Class.new(StandardError)
|
4
4
|
|
5
5
|
def find_by_description(desc)
|
6
6
|
# desc is like 'resource_type[name]'
|
7
|
-
|
7
|
+
resources.find do |resource|
|
8
8
|
type, name = Itamae::Resource.parse_description(desc)
|
9
9
|
resource.resource_type == type && resource.resource_name == name
|
10
10
|
end.tap do |resource|
|
@@ -15,7 +15,7 @@ module Itamae
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def subscribing(target)
|
18
|
-
|
18
|
+
resources.map do |resource|
|
19
19
|
resource.subscribes_resources.map do |action, r, timing|
|
20
20
|
if r == target
|
21
21
|
[action, resource, timing]
|
@@ -23,5 +23,17 @@ module Itamae
|
|
23
23
|
end.compact
|
24
24
|
end.flatten(1)
|
25
25
|
end
|
26
|
+
|
27
|
+
def resources
|
28
|
+
self.select do |item|
|
29
|
+
item.is_a?(Resource::Base)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def recipes
|
34
|
+
self.select do |item|
|
35
|
+
item.is_a?(Recipe)
|
36
|
+
end
|
37
|
+
end
|
26
38
|
end
|
27
39
|
end
|
data/lib/itamae/resource/base.rb
CHANGED
@@ -25,6 +25,7 @@ module Itamae
|
|
25
25
|
|
26
26
|
define_attribute :action, type: [Symbol, Array], required: true
|
27
27
|
|
28
|
+
attr_reader :recipe
|
28
29
|
attr_reader :resource_name
|
29
30
|
attr_reader :attributes
|
30
31
|
attr_reader :current_attributes
|
@@ -93,14 +94,14 @@ module Itamae
|
|
93
94
|
|
94
95
|
def notifies_resources
|
95
96
|
@notifies.map do |action, resource_desc, timing|
|
96
|
-
resource =
|
97
|
+
resource = recipe.dependencies.find_by_description(resource_desc)
|
97
98
|
[action, resource, timing]
|
98
99
|
end
|
99
100
|
end
|
100
101
|
|
101
102
|
def subscribes_resources
|
102
103
|
@subscribes.map do |action, resource_desc, timing|
|
103
|
-
resource =
|
104
|
+
resource = recipe.dependencies.find_by_description(resource_desc)
|
104
105
|
[action, resource, timing]
|
105
106
|
end
|
106
107
|
end
|
@@ -219,10 +220,6 @@ module Itamae
|
|
219
220
|
@recipe.runner
|
220
221
|
end
|
221
222
|
|
222
|
-
def resources
|
223
|
-
@recipe.resources
|
224
|
-
end
|
225
|
-
|
226
223
|
def run_command(*args)
|
227
224
|
backend.run_command(*args)
|
228
225
|
end
|
@@ -247,7 +244,7 @@ module Itamae
|
|
247
244
|
end
|
248
245
|
|
249
246
|
def notify
|
250
|
-
action_resource_timing = notifies_resources +
|
247
|
+
action_resource_timing = notifies_resources + recipe.dependencies.subscribing(self)
|
251
248
|
action_resource_timing.uniq.each do |action, resource, timing|
|
252
249
|
case timing
|
253
250
|
when :immediately
|
data/lib/itamae/version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.0.
|
1
|
+
1.0.0.beta11
|
@@ -0,0 +1 @@
|
|
1
|
+
execute "touch /tmp/included_recipe"
|
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.0.0.
|
4
|
+
version: 1.0.0.beta11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryota Arai
|
@@ -158,6 +158,7 @@ files:
|
|
158
158
|
- lib/itamae/logger.rb
|
159
159
|
- lib/itamae/node.rb
|
160
160
|
- lib/itamae/recipe.rb
|
161
|
+
- lib/itamae/recipe_dependencies.rb
|
161
162
|
- lib/itamae/resource.rb
|
162
163
|
- lib/itamae/resource/base.rb
|
163
164
|
- lib/itamae/resource/directory.rb
|
@@ -170,7 +171,6 @@ files:
|
|
170
171
|
- lib/itamae/resource/remote_file.rb
|
171
172
|
- lib/itamae/resource/service.rb
|
172
173
|
- lib/itamae/resource/template.rb
|
173
|
-
- lib/itamae/resource_collection.rb
|
174
174
|
- lib/itamae/runner.rb
|
175
175
|
- lib/itamae/version.rb
|
176
176
|
- lib/itamae/version.txt
|
@@ -179,6 +179,7 @@ files:
|
|
179
179
|
- spec/integration/recipes/default.rb
|
180
180
|
- spec/integration/recipes/hello.erb
|
181
181
|
- spec/integration/recipes/hello.txt
|
182
|
+
- spec/integration/recipes/included.rb
|
182
183
|
- spec/integration/recipes/node.json
|
183
184
|
- spec/integration/spec_helper.rb
|
184
185
|
- spec/unit/lib/itamae/logger_spec.rb
|
@@ -222,6 +223,7 @@ test_files:
|
|
222
223
|
- spec/integration/recipes/default.rb
|
223
224
|
- spec/integration/recipes/hello.erb
|
224
225
|
- spec/integration/recipes/hello.txt
|
226
|
+
- spec/integration/recipes/included.rb
|
225
227
|
- spec/integration/recipes/node.json
|
226
228
|
- spec/integration/spec_helper.rb
|
227
229
|
- spec/unit/lib/itamae/logger_spec.rb
|