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.
- data/README.rdoc +65 -0
- data/bin/run_workflow.rb +142 -69
- data/lib/rbbt-util.rb +3 -3
- data/lib/rbbt.rb +12 -3
- data/lib/rbbt/annotations.rb +215 -0
- data/lib/rbbt/{util/fix_width_table.rb → fix_width_table.rb} +17 -13
- data/lib/rbbt/persist.rb +164 -0
- data/lib/rbbt/persist/tsv.rb +135 -0
- data/lib/rbbt/resource.rb +100 -0
- data/lib/rbbt/resource/path.rb +180 -0
- data/lib/rbbt/resource/rake.rb +48 -0
- data/lib/rbbt/resource/util.rb +111 -0
- data/lib/rbbt/resource/with_key.rb +28 -0
- data/lib/rbbt/tsv.rb +134 -0
- data/lib/rbbt/tsv/accessor.rb +345 -0
- data/lib/rbbt/tsv/attach.rb +183 -0
- data/lib/rbbt/tsv/attach/util.rb +277 -0
- data/lib/rbbt/{util/tsv/filters.rb → tsv/filter.rb} +76 -37
- data/lib/rbbt/tsv/index.rb +453 -0
- data/lib/rbbt/tsv/manipulate.rb +361 -0
- data/lib/rbbt/tsv/parser.rb +231 -0
- data/lib/rbbt/tsv/serializers.rb +79 -0
- data/lib/rbbt/tsv/util.rb +67 -0
- data/lib/rbbt/util/R.rb +3 -3
- data/lib/rbbt/util/chain_methods.rb +64 -0
- data/lib/rbbt/util/cmd.rb +17 -13
- data/lib/rbbt/util/excel2tsv.rb +4 -3
- data/lib/rbbt/util/log.rb +1 -0
- data/lib/rbbt/util/misc.rb +296 -285
- data/lib/rbbt/util/open.rb +9 -2
- data/lib/rbbt/util/persistence.rb +1 -1
- data/lib/rbbt/util/task/job.rb +3 -1
- data/lib/rbbt/workflow.rb +193 -0
- data/lib/rbbt/workflow/accessor.rb +249 -0
- data/lib/rbbt/workflow/annotate.rb +60 -0
- data/lib/rbbt/workflow/soap.rb +100 -0
- data/lib/rbbt/workflow/step.rb +102 -0
- data/lib/rbbt/workflow/task.rb +76 -0
- data/test/rbbt/resource/test_path.rb +12 -0
- data/test/rbbt/test_annotations.rb +106 -0
- data/test/rbbt/{util/test_fix_width_table.rb → test_fix_width_table.rb} +8 -9
- data/test/rbbt/test_resource.rb +66 -0
- data/test/rbbt/test_tsv.rb +332 -0
- data/test/rbbt/test_workflow.rb +102 -0
- data/test/rbbt/tsv/test_accessor.rb +163 -0
- data/test/rbbt/{util/tsv → tsv}/test_attach.rb +86 -43
- data/test/rbbt/{util/tsv/test_filters.rb → tsv/test_filter.rb} +31 -13
- data/test/rbbt/tsv/test_index.rb +284 -0
- data/test/rbbt/{util/tsv → tsv}/test_manipulate.rb +35 -105
- data/test/rbbt/util/test_R.rb +1 -1
- data/test/rbbt/util/test_chain_methods.rb +22 -0
- data/test/rbbt/util/test_filecache.rb +0 -1
- data/test/rbbt/util/test_misc.rb +97 -79
- data/test/rbbt/util/test_open.rb +1 -0
- data/test/rbbt/util/test_tmpfile.rb +1 -1
- data/test/rbbt/workflow/test_soap.rb +103 -0
- data/test/rbbt/workflow/test_step.rb +142 -0
- data/test/rbbt/workflow/test_task.rb +84 -0
- data/test/test_helper.rb +7 -7
- metadata +80 -54
- data/lib/rbbt/util/rake.rb +0 -176
- data/lib/rbbt/util/resource.rb +0 -355
- data/lib/rbbt/util/task.rb +0 -183
- data/lib/rbbt/util/tc_hash.rb +0 -324
- data/lib/rbbt/util/tsv.rb +0 -236
- data/lib/rbbt/util/tsv/accessor.rb +0 -312
- data/lib/rbbt/util/tsv/attach.rb +0 -416
- data/lib/rbbt/util/tsv/index.rb +0 -419
- data/lib/rbbt/util/tsv/manipulate.rb +0 -300
- data/lib/rbbt/util/tsv/misc.rb +0 -41
- data/lib/rbbt/util/tsv/parse.rb +0 -324
- data/lib/rbbt/util/tsv/resource.rb +0 -88
- data/lib/rbbt/util/workflow.rb +0 -135
- data/lib/rbbt/util/workflow/soap.rb +0 -116
- data/test/rbbt/util/test_persistence.rb +0 -201
- data/test/rbbt/util/test_rake.rb +0 -54
- data/test/rbbt/util/test_resource.rb +0 -77
- data/test/rbbt/util/test_task.rb +0 -133
- data/test/rbbt/util/test_tc_hash.rb +0 -144
- data/test/rbbt/util/test_tsv.rb +0 -221
- data/test/rbbt/util/test_workflow.rb +0 -135
- data/test/rbbt/util/tsv/test_accessor.rb +0 -150
- data/test/rbbt/util/tsv/test_index.rb +0 -241
- data/test/rbbt/util/tsv/test_parse.rb +0 -87
- 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 '
|
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
|
-
|
14
|
+
Persist.cachedir = Rbbt.tmp.test.persistence.find :user
|
15
15
|
end
|
16
16
|
|
17
17
|
def teardown
|
18
|
-
FileUtils.rm_rf
|
19
|
-
|
20
|
-
|
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:
|
4
|
+
hash: 63
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
|
-
-
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version:
|
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
|
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/
|
140
|
-
- lib/rbbt/
|
141
|
-
- lib/rbbt/
|
142
|
-
- lib/rbbt/
|
143
|
-
- lib/rbbt/
|
144
|
-
- lib/rbbt/
|
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/
|
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/
|
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/
|
166
|
-
- test/rbbt/
|
167
|
-
- test/rbbt/
|
168
|
-
- test/rbbt/
|
169
|
-
- test/rbbt/
|
170
|
-
- test/rbbt/
|
171
|
-
- test/rbbt/
|
172
|
-
- test/rbbt/
|
173
|
-
- test/rbbt/
|
174
|
-
- test/rbbt/
|
175
|
-
- test/rbbt/
|
176
|
-
- test/rbbt/
|
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/
|
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/
|
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/
|
233
|
-
- test/rbbt/
|
234
|
-
- test/rbbt/
|
235
|
-
- test/rbbt/
|
236
|
-
- test/rbbt/
|
237
|
-
- test/rbbt/
|
238
|
-
- test/rbbt/
|
239
|
-
- test/rbbt/
|
240
|
-
- test/rbbt/
|
241
|
-
- test/rbbt/
|
242
|
-
- test/rbbt/
|
243
|
-
- test/rbbt/
|
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
|
data/lib/rbbt/util/rake.rb
DELETED
@@ -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
|
-
|