exel 1.0.1 → 1.1.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/.rubocop_todo.yml +0 -1
- data/lib/exel/job.rb +4 -0
- data/lib/exel/processors/run_processor.rb +19 -0
- data/lib/exel/version.rb +1 -1
- data/spec/exel/job_spec.rb +22 -21
- data/spec/exel/processors/run_processor_spec.rb +15 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c9430975944c61a336b74ec445fc85836c64827
|
4
|
+
data.tar.gz: c0189c97975d51869f45300c7a08d50a6f41c0f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5391eead9f34042b4e4e4fb22c5d19871b69a51371691ccea5d869a664d0a2d6f2dca408cb787eb0b1342b21a97250079e4551cd4bca8579b63012f8a39d3ae2
|
7
|
+
data.tar.gz: 46d654603de7860071251878716647dfcce4199ab858cb6d852156dc79f3258d4486e5202e52b543af53141d8dfda7e4e64e553ca9636a8648c7b60c2797ae96
|
data/.rubocop_todo.yml
CHANGED
@@ -16,7 +16,6 @@ RSpec/ExampleWording:
|
|
16
16
|
- 'spec/exel/handlers/s3_handler_spec.rb'
|
17
17
|
- 'spec/exel/instruction_node_spec.rb'
|
18
18
|
- 'spec/exel/instruction_spec.rb'
|
19
|
-
- 'spec/exel/job_spec.rb'
|
20
19
|
- 'spec/exel/logging_spec.rb'
|
21
20
|
- 'spec/exel/processors/split_processor_spec.rb'
|
22
21
|
- 'spec/exel/resource_spec.rb'
|
data/lib/exel/job.rb
CHANGED
@@ -57,6 +57,10 @@ module EXEL
|
|
57
57
|
add_instruction_node('split', Processors::SplitProcessor, block, options)
|
58
58
|
end
|
59
59
|
|
60
|
+
def run(options = {}, &block)
|
61
|
+
add_instruction_node('run', Processors::RunProcessor, block, options)
|
62
|
+
end
|
63
|
+
|
60
64
|
def context
|
61
65
|
DeferredContextValue.new
|
62
66
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative '../processor_helper'
|
2
|
+
|
3
|
+
module EXEL
|
4
|
+
module Processors
|
5
|
+
class RunProcessor
|
6
|
+
include EXEL::ProcessorHelper
|
7
|
+
|
8
|
+
def initialize(context)
|
9
|
+
@context = context
|
10
|
+
end
|
11
|
+
|
12
|
+
def process(_block = nil)
|
13
|
+
log_process "running job #{@context[:job]}" do
|
14
|
+
EXEL::Job.run(@context[:job], @context)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/exel/version.rb
CHANGED
data/spec/exel/job_spec.rb
CHANGED
@@ -6,12 +6,12 @@ module EXEL
|
|
6
6
|
|
7
7
|
after { Job.registry.clear }
|
8
8
|
|
9
|
-
it '
|
9
|
+
it 'registers job definitions' do
|
10
10
|
Job.define :test_job, &block
|
11
11
|
expect(Job.registry[:test_job]).to eq(block)
|
12
12
|
end
|
13
13
|
|
14
|
-
it '
|
14
|
+
it 'raises an exception if a job name is already in use' do
|
15
15
|
Job.define :test_job, &block
|
16
16
|
expect { Job.define :test_job, &block }.to raise_error 'Job :test_job is already defined'
|
17
17
|
end
|
@@ -22,13 +22,13 @@ module EXEL
|
|
22
22
|
let(:context) { instance_double(Context) }
|
23
23
|
|
24
24
|
context 'with a string of DSL code' do
|
25
|
-
it '
|
25
|
+
it 'parses the code' do
|
26
26
|
dsl_code = 'code'
|
27
27
|
expect(Job::Parser).to receive(:parse).with(dsl_code).and_return(ast)
|
28
28
|
Job.run(dsl_code, context)
|
29
29
|
end
|
30
30
|
|
31
|
-
it '
|
31
|
+
it 'runs the AST returned by the parser' do
|
32
32
|
allow(Job::Parser).to receive(:parse).and_return(ast)
|
33
33
|
expect(ast).to receive(:start).with(context)
|
34
34
|
Job.run('code', context)
|
@@ -43,7 +43,7 @@ module EXEL
|
|
43
43
|
allow(Job).to receive(:registry).and_return(test_job: block)
|
44
44
|
end
|
45
45
|
|
46
|
-
it '
|
46
|
+
it 'runs the job' do
|
47
47
|
expect(Job::Parser).to receive(:parse).with(block).and_return(ast)
|
48
48
|
expect(ast).to receive(:start).with(context)
|
49
49
|
Job.run(:test_job, context)
|
@@ -51,7 +51,7 @@ module EXEL
|
|
51
51
|
end
|
52
52
|
|
53
53
|
context 'of a undefined job' do
|
54
|
-
it '
|
54
|
+
it 'returns nil' do
|
55
55
|
expect { Job.run(:test_job, context) }.to raise_error('Job "test_job" not found')
|
56
56
|
end
|
57
57
|
end
|
@@ -64,11 +64,11 @@ module EXEL
|
|
64
64
|
context[:array] << context[:arg]
|
65
65
|
end
|
66
66
|
|
67
|
-
def process(
|
67
|
+
def process(_callback)
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
it '
|
71
|
+
it 'does not persist between runs' do
|
72
72
|
Job.define :test do
|
73
73
|
process with: TestProcessor, array: [], arg: context[:value]
|
74
74
|
end
|
@@ -89,7 +89,7 @@ module EXEL
|
|
89
89
|
let(:ast) { instance_double(SequenceNode, run: nil) }
|
90
90
|
|
91
91
|
describe '#initialize' do
|
92
|
-
it '
|
92
|
+
it 'initializes a sequence node' do
|
93
93
|
expect(parser.ast).to be_kind_of(SequenceNode)
|
94
94
|
end
|
95
95
|
end
|
@@ -102,7 +102,7 @@ module EXEL
|
|
102
102
|
end
|
103
103
|
|
104
104
|
context 'given DSL code as a proc' do
|
105
|
-
it '
|
105
|
+
it 'evals the code as a block' do
|
106
106
|
dsl_proc = proc {}
|
107
107
|
expect(parser).to receive(:instance_eval) do |*_args, &block|
|
108
108
|
expect(block).to eq(dsl_proc)
|
@@ -113,7 +113,7 @@ module EXEL
|
|
113
113
|
end
|
114
114
|
|
115
115
|
context 'given DSL code as a string' do
|
116
|
-
it '
|
116
|
+
it 'evals the code as a string' do
|
117
117
|
dsl_code = 'code'
|
118
118
|
expect(parser).to receive(:instance_eval).with(dsl_code)
|
119
119
|
|
@@ -121,7 +121,7 @@ module EXEL
|
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
124
|
-
it '
|
124
|
+
it 'returns the parsed AST' do
|
125
125
|
expect(Job::Parser.parse(proc {})).to eq(ast)
|
126
126
|
end
|
127
127
|
end
|
@@ -134,14 +134,14 @@ module EXEL
|
|
134
134
|
end
|
135
135
|
|
136
136
|
context 'without a block' do
|
137
|
-
it '
|
137
|
+
it 'creates a process instruction' do
|
138
138
|
processor_class = double(:processor_class)
|
139
139
|
expect(Instruction).to receive(:new).with('process', processor_class, {arg1: 'arg1_value'}, nil)
|
140
140
|
|
141
141
|
parser.process with: processor_class, arg1: 'arg1_value'
|
142
142
|
end
|
143
143
|
|
144
|
-
it '
|
144
|
+
it 'appends an instruction node to the AST with no children' do
|
145
145
|
expect(parser.ast).to receive(:add_child) do |node|
|
146
146
|
expect(node).to be_a_kind_of(InstructionNode)
|
147
147
|
expect(node.instruction.name).to eq('process')
|
@@ -153,7 +153,7 @@ module EXEL
|
|
153
153
|
end
|
154
154
|
|
155
155
|
context 'with a block' do
|
156
|
-
it '
|
156
|
+
it 'passes the parsed subtree to the instruction' do
|
157
157
|
processor_class = double(:processor_class)
|
158
158
|
expect(Job::Parser).to receive(:parse).with(block).and_return(ast)
|
159
159
|
expect(Instruction).to receive(:new).with('process', processor_class, {arg1: 'arg1_value'}, ast)
|
@@ -161,7 +161,7 @@ module EXEL
|
|
161
161
|
parser.process with: processor_class, arg1: 'arg1_value', &block
|
162
162
|
end
|
163
163
|
|
164
|
-
it '
|
164
|
+
it 'appends an instruction node to the AST with the parsed block as its subtree' do
|
165
165
|
expect(parser.ast).to receive(:add_child) do |node|
|
166
166
|
expect(node).to be_a_kind_of(InstructionNode)
|
167
167
|
expect(node.instruction.name).to eq('process')
|
@@ -175,26 +175,27 @@ module EXEL
|
|
175
175
|
|
176
176
|
[
|
177
177
|
{method: :async, processor: Processors::AsyncProcessor},
|
178
|
-
{method: :split, processor: Processors::SplitProcessor}
|
178
|
+
{method: :split, processor: Processors::SplitProcessor},
|
179
|
+
{method: :run, processor: Processors::RunProcessor}
|
179
180
|
].each do |data|
|
180
181
|
describe "##{data[:method]}" do
|
181
182
|
before do
|
182
183
|
allow(Job::Parser).to receive(:parse).and_return(ast)
|
183
184
|
end
|
184
185
|
|
185
|
-
it "
|
186
|
+
it "creates a #{data[:method]} instruction" do
|
186
187
|
expect(Instruction).to receive(:new).with(data[:method].to_s, data[:processor], {arg1: 'arg1_value'}, ast)
|
187
188
|
parser.send(data[:method], arg1: 'arg1_value') {}
|
188
189
|
end
|
189
190
|
|
190
|
-
it '
|
191
|
+
it 'parses the block given' do
|
191
192
|
block = -> {}
|
192
193
|
expect(Job::Parser).to receive(:parse).with(block).and_return(ast)
|
193
194
|
|
194
195
|
parser.send(data[:method], &block)
|
195
196
|
end
|
196
197
|
|
197
|
-
it '
|
198
|
+
it 'adds parsed subtree and instruction to the AST' do
|
198
199
|
expect(parser.ast).to receive(:add_child) do |node|
|
199
200
|
expect(node).to be_a_kind_of(InstructionNode)
|
200
201
|
expect(node.instruction.name).to eq(data[:method].to_s)
|
@@ -207,7 +208,7 @@ module EXEL
|
|
207
208
|
end
|
208
209
|
|
209
210
|
describe '#context' do
|
210
|
-
it '
|
211
|
+
it 'returns a DeferredContextValue' do
|
211
212
|
expect(parser.context).to be_a_kind_of(DeferredContextValue)
|
212
213
|
end
|
213
214
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module EXEL
|
2
|
+
module Processors
|
3
|
+
describe RunProcessor do
|
4
|
+
subject { RunProcessor.new(context) }
|
5
|
+
let(:context) { EXEL::Context.new(job: :test_job) }
|
6
|
+
|
7
|
+
describe '#process' do
|
8
|
+
it 'runs the job named in context[:job] with the current context' do
|
9
|
+
expect(EXEL::Job).to receive(:run).with(:test_job, context)
|
10
|
+
subject.process
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yroo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -194,6 +194,7 @@ files:
|
|
194
194
|
- lib/exel/null_instruction.rb
|
195
195
|
- lib/exel/processor_helper.rb
|
196
196
|
- lib/exel/processors/async_processor.rb
|
197
|
+
- lib/exel/processors/run_processor.rb
|
197
198
|
- lib/exel/processors/split_processor.rb
|
198
199
|
- lib/exel/providers/local_file_provider.rb
|
199
200
|
- lib/exel/providers/threaded_async_provider.rb
|
@@ -209,6 +210,7 @@ files:
|
|
209
210
|
- spec/exel/logging_spec.rb
|
210
211
|
- spec/exel/null_instruction_spec.rb
|
211
212
|
- spec/exel/processors/async_processor_spec.rb
|
213
|
+
- spec/exel/processors/run_processor_spec.rb
|
212
214
|
- spec/exel/processors/split_processor_spec.rb
|
213
215
|
- spec/exel/providers/local_file_provider_spec.rb
|
214
216
|
- spec/exel/providers/threaded_async_provider_spec.rb
|
@@ -250,6 +252,7 @@ test_files:
|
|
250
252
|
- spec/exel/logging_spec.rb
|
251
253
|
- spec/exel/null_instruction_spec.rb
|
252
254
|
- spec/exel/processors/async_processor_spec.rb
|
255
|
+
- spec/exel/processors/run_processor_spec.rb
|
253
256
|
- spec/exel/processors/split_processor_spec.rb
|
254
257
|
- spec/exel/providers/local_file_provider_spec.rb
|
255
258
|
- spec/exel/providers/threaded_async_provider_spec.rb
|