producer-core 0.3.2 → 0.3.3

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
  SHA1:
3
- metadata.gz: f5f4fa779cf02e6e7082cb3ab5d3243f40f21228
4
- data.tar.gz: c453810ddc78867a9b54e985028c823113ffed51
3
+ metadata.gz: 48c7af413fbd8bac4796f6789db5e1fe2ebc1717
4
+ data.tar.gz: 41c1543b1d8c4f7e529191a91c974a18d660e488
5
5
  SHA512:
6
- metadata.gz: 47986a1c3029cd9a2aeb0802effefcb30b83c5ea63113a027151cc7f699cfebbc07cc7d4b43f99490e6e8b2680b02e329ed534697e2dea3ced753d68298d0749
7
- data.tar.gz: fc68bd2f2f62402b15478a232b82ebdf1fa54925f027d32cdf32da70691b2a20c0c9656a23d2c61290eea12b28b03a6528f727a0df1470e47351ba4ba6786c0d
6
+ metadata.gz: d8d9d8a3b36801b7fe46f4655bdf3eab4a61bcd090ba40806911463ae704d4a8fd7a01951fb18545ab82913d63c71dd1ecb5151cad63880d0f9c145f0ba6372c
7
+ data.tar.gz: f52db474d584f3c6f23e7f6f9cbc88d21e400515ba624d092862190146d33bc062eb791637fb6105d8fb5e25d6bfb3282e510f57b582a529f3bb2df0ec6261f8
@@ -0,0 +1,15 @@
1
+ Feature: nested tasks
2
+
3
+ Background:
4
+ Given a recipe with:
5
+ """
6
+ task :outer_task do
7
+ task :inner_task do
8
+ echo 'OK'
9
+ end
10
+ end
11
+ """
12
+
13
+ Scenario: applies nested tasks
14
+ When I successfully execute the recipe
15
+ Then the output must match /\AOK/
@@ -43,6 +43,10 @@ module Producer
43
43
  @condition
44
44
  end
45
45
 
46
+ def task(name, *args, &block)
47
+ @actions << self.class.evaluate(@env, name, *args, &block)
48
+ end
49
+
46
50
  def ask(question, choices, prompter: Prompter.new(@env.input, @env.output))
47
51
  prompter.prompt(question, choices)
48
52
  end
@@ -1,5 +1,5 @@
1
1
  module Producer
2
2
  module Core
3
- VERSION = '0.3.2'.freeze
3
+ VERSION = '0.3.3'.freeze
4
4
  end
5
5
  end
@@ -18,8 +18,12 @@ module Producer
18
18
  if task.condition_met?
19
19
  @env.log "Task: `#{task}' applying..."
20
20
  task.actions.each do |e|
21
- @env.log " action: #{e}"
22
- e.apply unless @env.dry_run?
21
+ case e
22
+ when Task then process_task e
23
+ else
24
+ @env.log " action: #{e}"
25
+ e.apply unless @env.dry_run?
26
+ end
23
27
  end
24
28
  else
25
29
  @env.log "Task: `#{task}' skipped"
@@ -126,6 +126,15 @@ module Producer::Core
126
126
  end
127
127
  end
128
128
 
129
+ describe '#task' do
130
+ before { described_class.define_action(:some_action, SomeAction) }
131
+
132
+ it 'registers a nested task as an action' do
133
+ task.task(:nested_task) { some_action }
134
+ expect(task.actions).to match [an_instance_of(Task)]
135
+ end
136
+ end
137
+
129
138
  describe '#ask' do
130
139
  let(:question) { 'Which letter?' }
131
140
  let(:choices) { [[:a, ?A], [:b, ?B]] }
@@ -25,9 +25,9 @@ module Producer::Core
25
25
  end
26
26
 
27
27
  describe '#process_task' do
28
- let(:env) { instance_spy Env, dry_run?: false }
29
- let(:action) { double('action', to_s: 'echo').as_null_object }
30
- let(:task) { Task.new(env, :some_task, [action]) }
28
+ let(:env) { instance_spy Env, dry_run?: false }
29
+ let(:action) { double('action', to_s: 'echo').as_null_object }
30
+ let(:task) { Task.new(env, :some_task, [action]) }
31
31
 
32
32
  it 'logs task info' do
33
33
  expect(env).to receive(:log).with /\ATask: `some_task'/
@@ -68,11 +68,21 @@ module Producer::Core
68
68
  worker.process_task task
69
69
  end
70
70
 
71
- it 'logs the task as beeing skipped' do
71
+ it 'logs the task as being skipped' do
72
72
  expect(env).to receive(:log).with /some_task.+skipped\z/
73
73
  worker.process_task task
74
74
  end
75
75
  end
76
+
77
+ context 'when a task contains nested tasks' do
78
+ let(:inner_task) { Task.new(env, :inner, [action]) }
79
+ let(:outer_task) { Task.new(env, :outer, [inner_task]) }
80
+
81
+ it 'processes nested tasks' do
82
+ expect(action).to receive :apply
83
+ worker.process [outer_task]
84
+ end
85
+ end
76
86
  end
77
87
  end
78
88
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: producer-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thibault Jouan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-22 00:00:00.000000000 Z
11
+ date: 2014-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ssh
@@ -152,6 +152,7 @@ files:
152
152
  - features/support/env_fake_home.rb
153
153
  - features/task_ask.feature
154
154
  - features/task_condition.feature
155
+ - features/task_nested_tasks.feature
155
156
  - features/test_dir.feature
156
157
  - features/test_env.feature
157
158
  - features/test_executable.feature
@@ -287,6 +288,7 @@ test_files:
287
288
  - features/support/env_fake_home.rb
288
289
  - features/task_ask.feature
289
290
  - features/task_condition.feature
291
+ - features/task_nested_tasks.feature
290
292
  - features/test_dir.feature
291
293
  - features/test_env.feature
292
294
  - features/test_executable.feature