rbbt-util 3.2.1 → 4.0.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.
Files changed (85) hide show
  1. data/README.rdoc +65 -0
  2. data/bin/run_workflow.rb +142 -69
  3. data/lib/rbbt-util.rb +3 -3
  4. data/lib/rbbt.rb +12 -3
  5. data/lib/rbbt/annotations.rb +215 -0
  6. data/lib/rbbt/{util/fix_width_table.rb → fix_width_table.rb} +17 -13
  7. data/lib/rbbt/persist.rb +164 -0
  8. data/lib/rbbt/persist/tsv.rb +135 -0
  9. data/lib/rbbt/resource.rb +100 -0
  10. data/lib/rbbt/resource/path.rb +180 -0
  11. data/lib/rbbt/resource/rake.rb +48 -0
  12. data/lib/rbbt/resource/util.rb +111 -0
  13. data/lib/rbbt/resource/with_key.rb +28 -0
  14. data/lib/rbbt/tsv.rb +134 -0
  15. data/lib/rbbt/tsv/accessor.rb +345 -0
  16. data/lib/rbbt/tsv/attach.rb +183 -0
  17. data/lib/rbbt/tsv/attach/util.rb +277 -0
  18. data/lib/rbbt/{util/tsv/filters.rb → tsv/filter.rb} +76 -37
  19. data/lib/rbbt/tsv/index.rb +453 -0
  20. data/lib/rbbt/tsv/manipulate.rb +361 -0
  21. data/lib/rbbt/tsv/parser.rb +231 -0
  22. data/lib/rbbt/tsv/serializers.rb +79 -0
  23. data/lib/rbbt/tsv/util.rb +67 -0
  24. data/lib/rbbt/util/R.rb +3 -3
  25. data/lib/rbbt/util/chain_methods.rb +64 -0
  26. data/lib/rbbt/util/cmd.rb +17 -13
  27. data/lib/rbbt/util/excel2tsv.rb +4 -3
  28. data/lib/rbbt/util/log.rb +1 -0
  29. data/lib/rbbt/util/misc.rb +296 -285
  30. data/lib/rbbt/util/open.rb +9 -2
  31. data/lib/rbbt/util/persistence.rb +1 -1
  32. data/lib/rbbt/util/task/job.rb +3 -1
  33. data/lib/rbbt/workflow.rb +193 -0
  34. data/lib/rbbt/workflow/accessor.rb +249 -0
  35. data/lib/rbbt/workflow/annotate.rb +60 -0
  36. data/lib/rbbt/workflow/soap.rb +100 -0
  37. data/lib/rbbt/workflow/step.rb +102 -0
  38. data/lib/rbbt/workflow/task.rb +76 -0
  39. data/test/rbbt/resource/test_path.rb +12 -0
  40. data/test/rbbt/test_annotations.rb +106 -0
  41. data/test/rbbt/{util/test_fix_width_table.rb → test_fix_width_table.rb} +8 -9
  42. data/test/rbbt/test_resource.rb +66 -0
  43. data/test/rbbt/test_tsv.rb +332 -0
  44. data/test/rbbt/test_workflow.rb +102 -0
  45. data/test/rbbt/tsv/test_accessor.rb +163 -0
  46. data/test/rbbt/{util/tsv → tsv}/test_attach.rb +86 -43
  47. data/test/rbbt/{util/tsv/test_filters.rb → tsv/test_filter.rb} +31 -13
  48. data/test/rbbt/tsv/test_index.rb +284 -0
  49. data/test/rbbt/{util/tsv → tsv}/test_manipulate.rb +35 -105
  50. data/test/rbbt/util/test_R.rb +1 -1
  51. data/test/rbbt/util/test_chain_methods.rb +22 -0
  52. data/test/rbbt/util/test_filecache.rb +0 -1
  53. data/test/rbbt/util/test_misc.rb +97 -79
  54. data/test/rbbt/util/test_open.rb +1 -0
  55. data/test/rbbt/util/test_tmpfile.rb +1 -1
  56. data/test/rbbt/workflow/test_soap.rb +103 -0
  57. data/test/rbbt/workflow/test_step.rb +142 -0
  58. data/test/rbbt/workflow/test_task.rb +84 -0
  59. data/test/test_helper.rb +7 -7
  60. metadata +80 -54
  61. data/lib/rbbt/util/rake.rb +0 -176
  62. data/lib/rbbt/util/resource.rb +0 -355
  63. data/lib/rbbt/util/task.rb +0 -183
  64. data/lib/rbbt/util/tc_hash.rb +0 -324
  65. data/lib/rbbt/util/tsv.rb +0 -236
  66. data/lib/rbbt/util/tsv/accessor.rb +0 -312
  67. data/lib/rbbt/util/tsv/attach.rb +0 -416
  68. data/lib/rbbt/util/tsv/index.rb +0 -419
  69. data/lib/rbbt/util/tsv/manipulate.rb +0 -300
  70. data/lib/rbbt/util/tsv/misc.rb +0 -41
  71. data/lib/rbbt/util/tsv/parse.rb +0 -324
  72. data/lib/rbbt/util/tsv/resource.rb +0 -88
  73. data/lib/rbbt/util/workflow.rb +0 -135
  74. data/lib/rbbt/util/workflow/soap.rb +0 -116
  75. data/test/rbbt/util/test_persistence.rb +0 -201
  76. data/test/rbbt/util/test_rake.rb +0 -54
  77. data/test/rbbt/util/test_resource.rb +0 -77
  78. data/test/rbbt/util/test_task.rb +0 -133
  79. data/test/rbbt/util/test_tc_hash.rb +0 -144
  80. data/test/rbbt/util/test_tsv.rb +0 -221
  81. data/test/rbbt/util/test_workflow.rb +0 -135
  82. data/test/rbbt/util/tsv/test_accessor.rb +0 -150
  83. data/test/rbbt/util/tsv/test_index.rb +0 -241
  84. data/test/rbbt/util/tsv/test_parse.rb +0 -87
  85. data/test/rbbt/util/tsv/test_resource.rb +0 -9
@@ -0,0 +1,84 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../..', 'test_helper.rb')
2
+ require 'rbbt/workflow/task'
3
+ require 'rbbt'
4
+
5
+ class TEST
6
+ def self.times(str, times)
7
+ [str] * times
8
+ end
9
+ end
10
+
11
+ class TestTask < Test::Unit::TestCase
12
+ def test_task_setup
13
+ a = [1,2]
14
+ p = Task.setup{|pos| self[pos]}
15
+
16
+ assert_equal 1, p.exec_in(a, 0)
17
+ assert_equal 2, p.exec_in(a, 1)
18
+ end
19
+
20
+ def test_task_exec
21
+ a = [1,2]
22
+ p = Proc.new{|pos| self[pos]}
23
+ p.extend Task
24
+ assert_equal 1, p.exec_in(a, 0)
25
+ assert_equal 2, p.exec_in(a, 1)
26
+ end
27
+
28
+ def test_task_named
29
+ t = Task.setup :inputs => %w(str times) do |str, times| [str] * times end
30
+ assert_equal %w(test test), t.exec(:str => "test", :times => 2)
31
+ assert_equal %w(test test), t.exec(:str => "test", :times => 2)
32
+ end
33
+
34
+ def test_task_persist
35
+ t = Task.setup :inputs => %w(str times) do |str, times|
36
+ [str] * times
37
+ end
38
+
39
+ TmpFile.with_file do |perfile|
40
+ assert_equal %w(test test), t.persist_exec_in(perfile, Object.new, :str => "test", :times => 2)
41
+ assert File.exist? perfile
42
+
43
+ t = Task.setup :inputs => %w(str times) do |str, times|
44
+ raise "Persistence ignored"
45
+ end
46
+
47
+ assert_equal %w(test test), t.persist_exec_in(perfile, Object.new, :str => "test", :times => 2)
48
+ end
49
+ end
50
+
51
+ def test_task_unbound_method
52
+ t = TEST.method :times
53
+ t.extend Task
54
+ t.inputs = %w(str times)
55
+
56
+ TmpFile.with_file do |perfile|
57
+ assert_equal %w(test test), t.persist_exec_in(perfile, Object.new, :str => "test", :times => 2)
58
+ assert File.exist? perfile
59
+
60
+ t = Task.setup :inputs => %w(str times) do |str, times|
61
+ raise "Persistence ignored"
62
+ end
63
+
64
+ assert_equal %w(test test), t.persist_exec_in(perfile, Object.new, :str => "test", :times => 2)
65
+ end
66
+ end
67
+
68
+ def test_task_unbound_method2
69
+ t = Task.setup :inputs => %w(str times), &TEST.method(:times)
70
+
71
+ TmpFile.with_file do |perfile|
72
+ assert_equal %w(test test), t.persist_exec_in(perfile, Object.new, :str => "test", :times => 2)
73
+ assert File.exist? perfile
74
+
75
+ t = Task.setup :inputs => %w(str times) do |str, times|
76
+ raise "Persistence ignored"
77
+ end
78
+
79
+ assert_equal %w(test test), t.persist_exec_in(perfile, Object.new, :str => "test", :times => 2)
80
+ end
81
+ end
82
+
83
+
84
+ end
data/test/test_helper.rb CHANGED
@@ -1,23 +1,23 @@
1
- require 'test/unit'
2
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
4
3
  require 'rbbt'
5
- require 'rbbt/util/persistence'
6
- require 'rbbt/util/tmpfile'
4
+ require 'test/unit'
7
5
  require 'rbbt/util/log'
6
+ require 'rbbt/util/tmpfile'
7
+ require 'rbbt/resource/path'
8
8
  require 'fileutils'
9
9
 
10
10
  class Test::Unit::TestCase
11
11
  include FileUtils
12
12
 
13
13
  def setup
14
- Persistence.cachedir = Rbbt.tmp.test.persistence.find :user
14
+ Persist.cachedir = Rbbt.tmp.test.persistence.find :user
15
15
  end
16
16
 
17
17
  def teardown
18
- FileUtils.rm_rf Rbbt.tmp.test.find :user
19
- TCHash::CONNECTIONS.values.each do |c| c.close end
20
- TCHash::CONNECTIONS.clear
18
+ FileUtils.rm_rf Path.setup("", 'rbbt').tmp.test.find :user
19
+ Persist::TC_CONNECTIONS.values.each do |c| c.close end
20
+ Persist::TC_CONNECTIONS.clear
21
21
  end
22
22
 
23
23
  def datafile_test(file)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 63
5
5
  prerelease: false
6
6
  segments:
7
- - 3
8
- - 2
9
- - 1
10
- version: 3.2.1
7
+ - 4
8
+ - 0
9
+ - 0
10
+ version: 4.0.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Miguel Vazquez
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-07-05 00:00:00 +02:00
18
+ date: 2011-09-07 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -102,6 +102,20 @@ dependencies:
102
102
  version: "0"
103
103
  type: :runtime
104
104
  version_requirements: *id006
105
+ - !ruby/object:Gem::Dependency
106
+ name: RubyInline
107
+ prerelease: false
108
+ requirement: &id007 !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ hash: 3
114
+ segments:
115
+ - 0
116
+ version: "0"
117
+ type: :runtime
118
+ version_requirements: *id007
105
119
  description: Utilities for handling tsv files, caches, etc
106
120
  email: miguel.vazquez@fdi.ucm.es
107
121
  executables:
@@ -115,65 +129,77 @@ extensions: []
115
129
 
116
130
  extra_rdoc_files:
117
131
  - LICENSE
132
+ - README.rdoc
118
133
  files:
119
134
  - LICENSE
120
135
  - lib/rbbt-util.rb
121
136
  - lib/rbbt.rb
137
+ - lib/rbbt/annotations.rb
138
+ - lib/rbbt/fix_width_table.rb
139
+ - lib/rbbt/persist.rb
140
+ - lib/rbbt/persist/tsv.rb
141
+ - lib/rbbt/resource.rb
142
+ - lib/rbbt/resource/path.rb
143
+ - lib/rbbt/resource/rake.rb
144
+ - lib/rbbt/resource/util.rb
145
+ - lib/rbbt/resource/with_key.rb
146
+ - lib/rbbt/tsv.rb
147
+ - lib/rbbt/tsv/accessor.rb
148
+ - lib/rbbt/tsv/attach.rb
149
+ - lib/rbbt/tsv/attach/util.rb
150
+ - lib/rbbt/tsv/filter.rb
151
+ - lib/rbbt/tsv/index.rb
152
+ - lib/rbbt/tsv/manipulate.rb
153
+ - lib/rbbt/tsv/parser.rb
154
+ - lib/rbbt/tsv/serializers.rb
155
+ - lib/rbbt/tsv/util.rb
122
156
  - lib/rbbt/util/R.rb
157
+ - lib/rbbt/util/chain_methods.rb
123
158
  - lib/rbbt/util/cmd.rb
124
159
  - lib/rbbt/util/excel2tsv.rb
125
160
  - lib/rbbt/util/filecache.rb
126
- - lib/rbbt/util/fix_width_table.rb
127
161
  - lib/rbbt/util/log.rb
128
162
  - lib/rbbt/util/misc.rb
129
163
  - lib/rbbt/util/open.rb
130
164
  - lib/rbbt/util/persistence.rb
131
- - lib/rbbt/util/rake.rb
132
- - lib/rbbt/util/resource.rb
133
165
  - lib/rbbt/util/simpleDSL.rb
134
166
  - lib/rbbt/util/simpleopt.rb
135
- - lib/rbbt/util/task.rb
136
167
  - lib/rbbt/util/task/job.rb
137
- - lib/rbbt/util/tc_hash.rb
138
168
  - lib/rbbt/util/tmpfile.rb
139
- - lib/rbbt/util/tsv.rb
140
- - lib/rbbt/util/tsv/accessor.rb
141
- - lib/rbbt/util/tsv/attach.rb
142
- - lib/rbbt/util/tsv/filters.rb
143
- - lib/rbbt/util/tsv/index.rb
144
- - lib/rbbt/util/tsv/manipulate.rb
145
- - lib/rbbt/util/tsv/misc.rb
146
- - lib/rbbt/util/tsv/parse.rb
147
- - lib/rbbt/util/tsv/resource.rb
148
- - lib/rbbt/util/workflow.rb
149
- - lib/rbbt/util/workflow/soap.rb
169
+ - lib/rbbt/workflow.rb
170
+ - lib/rbbt/workflow/accessor.rb
171
+ - lib/rbbt/workflow/annotate.rb
172
+ - lib/rbbt/workflow/soap.rb
173
+ - lib/rbbt/workflow/step.rb
174
+ - lib/rbbt/workflow/task.rb
150
175
  - share/install/software/lib/install_helpers
151
176
  - share/lib/R/util.R
177
+ - README.rdoc
152
178
  - test/test_helper.rb
153
179
  - test/rbbt/util/test_tmpfile.rb
154
180
  - test/rbbt/util/test_filecache.rb
155
181
  - test/rbbt/util/test_open.rb
156
- - test/rbbt/util/test_tsv.rb
182
+ - test/rbbt/util/test_R.rb
157
183
  - test/rbbt/util/test_misc.rb
158
184
  - test/rbbt/util/test_cmd.rb
159
- - test/rbbt/util/test_tc_hash.rb
160
185
  - test/rbbt/util/test_simpleDSL.rb
161
- - test/rbbt/util/test_resource.rb
162
- - test/rbbt/util/test_R.rb
186
+ - test/rbbt/util/test_chain_methods.rb
163
187
  - test/rbbt/util/test_excel2tsv.rb
164
188
  - test/rbbt/util/test_simpleopt.rb
165
- - test/rbbt/util/test_task.rb
166
- - test/rbbt/util/test_persistence.rb
167
- - test/rbbt/util/test_rake.rb
168
- - test/rbbt/util/test_workflow.rb
169
- - test/rbbt/util/tsv/test_parse.rb
170
- - test/rbbt/util/tsv/test_accessor.rb
171
- - test/rbbt/util/tsv/test_manipulate.rb
172
- - test/rbbt/util/tsv/test_index.rb
173
- - test/rbbt/util/tsv/test_attach.rb
174
- - test/rbbt/util/tsv/test_resource.rb
175
- - test/rbbt/util/tsv/test_filters.rb
176
- - test/rbbt/util/test_fix_width_table.rb
189
+ - test/rbbt/resource/test_path.rb
190
+ - test/rbbt/test_annotations.rb
191
+ - test/rbbt/test_fix_width_table.rb
192
+ - test/rbbt/test_resource.rb
193
+ - test/rbbt/test_tsv.rb
194
+ - test/rbbt/test_workflow.rb
195
+ - test/rbbt/tsv/test_accessor.rb
196
+ - test/rbbt/tsv/test_attach.rb
197
+ - test/rbbt/tsv/test_filter.rb
198
+ - test/rbbt/tsv/test_index.rb
199
+ - test/rbbt/tsv/test_manipulate.rb
200
+ - test/rbbt/workflow/test_soap.rb
201
+ - test/rbbt/workflow/test_step.rb
202
+ - test/rbbt/workflow/test_task.rb
177
203
  - test/test_rbbt.rb
178
204
  - bin/tsv.rb
179
205
  - bin/tchash.rb
@@ -220,25 +246,25 @@ test_files:
220
246
  - test/rbbt/util/test_tmpfile.rb
221
247
  - test/rbbt/util/test_filecache.rb
222
248
  - test/rbbt/util/test_open.rb
223
- - test/rbbt/util/test_tsv.rb
249
+ - test/rbbt/util/test_R.rb
224
250
  - test/rbbt/util/test_misc.rb
225
251
  - test/rbbt/util/test_cmd.rb
226
- - test/rbbt/util/test_tc_hash.rb
227
252
  - test/rbbt/util/test_simpleDSL.rb
228
- - test/rbbt/util/test_resource.rb
229
- - test/rbbt/util/test_R.rb
253
+ - test/rbbt/util/test_chain_methods.rb
230
254
  - test/rbbt/util/test_excel2tsv.rb
231
255
  - test/rbbt/util/test_simpleopt.rb
232
- - test/rbbt/util/test_task.rb
233
- - test/rbbt/util/test_persistence.rb
234
- - test/rbbt/util/test_rake.rb
235
- - test/rbbt/util/test_workflow.rb
236
- - test/rbbt/util/tsv/test_parse.rb
237
- - test/rbbt/util/tsv/test_accessor.rb
238
- - test/rbbt/util/tsv/test_manipulate.rb
239
- - test/rbbt/util/tsv/test_index.rb
240
- - test/rbbt/util/tsv/test_attach.rb
241
- - test/rbbt/util/tsv/test_resource.rb
242
- - test/rbbt/util/tsv/test_filters.rb
243
- - test/rbbt/util/test_fix_width_table.rb
256
+ - test/rbbt/resource/test_path.rb
257
+ - test/rbbt/test_annotations.rb
258
+ - test/rbbt/test_fix_width_table.rb
259
+ - test/rbbt/test_resource.rb
260
+ - test/rbbt/test_tsv.rb
261
+ - test/rbbt/test_workflow.rb
262
+ - test/rbbt/tsv/test_accessor.rb
263
+ - test/rbbt/tsv/test_attach.rb
264
+ - test/rbbt/tsv/test_filter.rb
265
+ - test/rbbt/tsv/test_index.rb
266
+ - test/rbbt/tsv/test_manipulate.rb
267
+ - test/rbbt/workflow/test_soap.rb
268
+ - test/rbbt/workflow/test_step.rb
269
+ - test/rbbt/workflow/test_task.rb
244
270
  - test/test_rbbt.rb
@@ -1,176 +0,0 @@
1
- require 'rake'
2
- require 'rbbt/util/tsv'
3
- require 'rbbt/util/open'
4
- require 'rbbt/util/log'
5
-
6
- module RakeHelper
7
- def self.files(rakefile, task = :default, chdir = nil)
8
- status = nil
9
- files = nil
10
- TmpFile.with_file do |f|
11
- pid = Process.fork{
12
- require 'rake'
13
- FileUtils.chdir chdir if chdir
14
-
15
- Rake::FileTask.module_eval do
16
- if not self.respond_to? :old_define_task
17
- class << self
18
- alias_method :old_define_task, :define_task
19
- end
20
- end
21
-
22
- def self.define_task(file, *args, &block)
23
- @@files ||= []
24
- if Hash === file
25
- @@files << file.keys.first.to_s
26
- else
27
- @@files << file.to_s
28
- end
29
- old_define_task(file, *args, &block)
30
- end
31
-
32
- def self.files
33
- if defined? @@files
34
- @@files
35
- else
36
- @@file = []
37
- end
38
- end
39
- end
40
-
41
- load rakefile
42
-
43
- Open.write(f, Rake::FileTask.files * "\n")
44
- exit
45
- }
46
-
47
-
48
- pid, status = Process.waitpid2(pid)
49
- files = Open.read(f).split("\n")
50
- end
51
- raise "Error getting files from Rake: #{ rakefile } " unless status.success?
52
- files
53
- end
54
-
55
- def self.run(rakefile, task = :default, chdir = nil)
56
- require 'rake'
57
- old_pwd = FileUtils.pwd
58
- FileUtils.chdir chdir if chdir
59
-
60
- Rake::FileTask.module_eval do
61
- if not self.respond_to? :old_define_task
62
- class << self
63
- alias_method :old_define_task, :define_task
64
- end
65
-
66
- def self.define_task(file, *args, &block)
67
- @@files ||= []
68
- @@files << file
69
- old_define_task(file, *args, &block)
70
- end
71
- end
72
-
73
- def self.files
74
- @@files
75
- end
76
-
77
- def self.clear_files
78
- @@files = []
79
- end
80
- end
81
-
82
- Rake::Task.clear
83
- Rake::FileTask.clear_files
84
- if block_given?
85
- yield
86
- else
87
- load rakefile
88
- end
89
-
90
- task(:default) do |t|
91
- Rake::FileTask.files.each do |file| Rake::Task[file].invoke end
92
- end
93
-
94
- Rake::Task[task].invoke
95
-
96
- Rake::Task.clear
97
- Rake::FileTask.clear_files
98
-
99
- FileUtils.chdir old_pwd
100
- end
101
-
102
- module WorkFlow
103
- attr_accessor :default_persistence, :stage_options, :run_options
104
-
105
- def stage_options(stage = :next)
106
- @stage_options ||= {}
107
- @stage_options[stage] ||= []
108
- end
109
-
110
- def run_options
111
- @run_options ||= {}
112
- end
113
-
114
- def stage(stage_name, options = nil)
115
- dependencies, options = case
116
- when ((String === options or Symbol === options) and %w(string marshal yaml tsv tsv_string).include? options.to_s)
117
- [nil, {:persistence_type => options}]
118
- when Hash === options
119
- [nil, options]
120
- else
121
- [options, {}]
122
- end
123
-
124
- @stage_options[stage_name] = @stage_options[:next]
125
-
126
- options = Misc.add_defaults options, :persistence_type => default_persistence || :string
127
- persistence_type = Misc.process_options options, :persistence_type
128
- dependencies = Misc.process_options options, :dependencies if options.include? :dependencies
129
-
130
- re = Regexp.new(/(?:^|\/)#{Regexp.quote stage_name.to_s}\/.*$/)
131
-
132
- @last_step = nil unless defined? @last_step
133
- @last_persistence_type = nil unless defined? @last_persistence_type
134
-
135
- if dependencies.nil? && ! @last_step.nil?
136
- dependencies = @last_step
137
- end
138
- @last_step = stage_name
139
-
140
- # Generate the Hash definition
141
- rule_def = case
142
- when dependencies.nil?
143
- re
144
- when String === dependencies
145
- {re => dependencies}
146
- when Symbol === dependencies
147
- {re => lambda{|filename| filename.sub(stage_name.to_s, dependencies.to_s) }}
148
- when Array === dependencies
149
- {re => lambda{|filename| dependencies.collect{|dep| filename.sub(stage_name.to_s, dep.to_s) } }}
150
- when Proc === dependencies
151
- {re => dependencies}
152
- end
153
-
154
- @last_step = stage_name
155
- last_persistence_type, @last_persistence_type = @last_persistence_type, persistence_type
156
-
157
- rule rule_def do |t|
158
- Persistence.persist(t, "", persistence_type, :persistence_file => t.name) do |t, options|
159
- data = case
160
- when (t.prerequisites.nil? or (Array === t.prerequisites and t.prerequisites.empty?))
161
- nil
162
- else
163
- Persistence.persist(t.prerequisites.first, "", last_persistence_type, :persistence_file => t.prerequisites.first) do
164
- raise "Error, this file should be produced already"
165
- end
166
- end
167
- options = @run_options.values_at *stage_options
168
- step stage_name, "Executing step [#{ stage_name }]"
169
- yield t, *options
170
- end
171
- end
172
- end
173
- end
174
- end
175
-
176
-