simplews 1.8.3 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -118,56 +118,65 @@ module Rake::Pipeline
118
118
  Rake::Pipeline::Step.step_descriptions
119
119
  end
120
120
 
121
-
122
121
  def step_dependencies(*args)
123
122
  Rake::Pipeline::Step.step_dependencies(*args)
124
123
  end
125
124
 
126
- def infile(t, &block)
127
- File.open(t.prerequisites.first) do |f|
125
+ def step_dir(step = nil, filename = nil)
126
+ filename ||= @@current_task.name
127
+ info = Rake::Pipeline::Step.parse_filename(filename)
128
+ "%s/%s" % [info[:prefix], step || info[:step]]
129
+ end
130
+
131
+ def input_filename(task = nil, step = nil)
132
+ task ||= @@current_task
133
+ if step.nil?
134
+ task.prerequisites.first
135
+ else
136
+ File.join(step_dir(step, task.name), job_name)
137
+ end
138
+ end
139
+
140
+ def output_filename(task = nil)
141
+ task ||= @@current_task
142
+ task.name
143
+ end
144
+
145
+
146
+ def infile(task, step = nil, &block)
147
+ filename = input_filename(task, step)
148
+ File.open(filename) do |f|
128
149
  block.call(f)
129
150
  end
130
151
  end
131
152
 
132
- def outfile(t, &block)
133
- File.open(t.name, 'w') do |f|
153
+ def outfile(task, &block)
154
+ filename = output_filename(task)
155
+ File.open(filename, 'w') do |f|
134
156
  block.call(f)
135
157
  end
136
158
  end
137
159
 
138
- def load_input(t, step = nil)
139
- if step
140
- info = Rake::Pipeline::Step.parse_filename(t.name)
141
- filename = "#{info[:prefix]}/#{step}/#{info[:job]}"
142
- File.open(filename){|f|
143
- if is_binary?(f)
144
- Marshal.load(f)
145
- else
146
- f.read
147
- end
148
- }
149
- else
150
- return nil if t.prerequisites.first.nil?
151
- infile(t){|f|
152
- if is_binary?(f)
153
- Marshal.load(f)
154
- else
155
- f.read
156
- end
157
- }
160
+ def load_input(task, step = nil)
161
+ infile(task, step) do |f|
162
+ if is_binary?(f)
163
+ Marshal.load(f)
164
+ else
165
+ f.read
166
+ end
158
167
  end
159
168
  end
169
+
160
170
 
161
- def save_output(t, output)
171
+ def save_output(task, output)
162
172
  case
163
173
  when output.nil?
164
174
  nil
165
175
  when String === output
166
- outfile(t){|f| f.write output }
176
+ outfile(task){|f| f.write output }
167
177
  else
168
- outfile(t){|f| f.write Marshal.dump(output) }
178
+ outfile(task){|f| f.write Marshal.dump(output) }
169
179
  end
170
-
171
180
  end
172
181
 
173
182
  # We cannot load the input variable before the block.call, so we need another method
@@ -179,7 +188,11 @@ module Rake::Pipeline
179
188
 
180
189
  if defined? SimpleWS::Jobs
181
190
  def method_missing(symbol, *args)
182
- $_current_job.send(symbol, *args)
191
+ if $_current_job.methods.include? symbol.to_s
192
+ $_current_job.send(symbol, *args)
193
+ else
194
+ raise "Method #{ symbol } not found"
195
+ end
183
196
  end
184
197
  else
185
198
  # Announce steps
@@ -194,11 +207,12 @@ module Rake::Pipeline
194
207
  Rake::Pipeline::Info.save_info(@@current_task, info)
195
208
  info
196
209
  end
210
+
211
+ def job_name
212
+ File.basename(@@current_task.name)
213
+ end
197
214
  end
198
215
 
199
-
200
-
201
-
202
216
  # Define a new step, it depends on the previously defined by default. It
203
217
  # saves the output of the block so it can be loaded by the input method of
204
218
  # the next step
@@ -290,9 +290,10 @@ class SimpleWS::Jobs < SimpleWS
290
290
  save
291
291
  end
292
292
 
293
- def info(info)
293
+ def info(info = {})
294
294
  @state[:info].merge!(info)
295
295
  save
296
+ @state[:info]
296
297
  end
297
298
 
298
299
  def results(results)
@@ -18,7 +18,7 @@ class SimpleWS::Jobs::Scheduler::Job
18
18
  # 'execute' method of the Rake::Tasks class method execute is monkey-patched
19
19
  # to log the steps. Since this is executed on a new process, there should be
20
20
  # no side-effects from the patching.
21
- def rake(rakefile = "Rakefile")
21
+ def rake(rakefile = "Rakefile", target = nil)
22
22
  Rake::Task.class_eval <<-'EOC'
23
23
  alias_method :old_execute, :execute
24
24
  def execute(*args)
@@ -60,10 +60,12 @@ class SimpleWS::Jobs::Scheduler::Job
60
60
  end
61
61
 
62
62
  files = result_filenames
63
+ target ||= files.first
63
64
 
64
65
  $_current_job = self
65
66
  $_step_descriptions = @step_descriptions || {}
66
- Rake::Task[files.first].invoke
67
+
68
+ Rake::Task[target].invoke
67
69
  end
68
70
 
69
71
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplews
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.3
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-26 00:00:00 +01:00
12
+ date: 2010-02-15 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency