rbbt-util 5.20.9 → 5.20.10

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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rbbt +1 -1
  3. data/bin/rbbt_query.rb +1 -1
  4. data/lib/rbbt/association/index.rb +3 -3
  5. data/lib/rbbt/fix_width_table.rb +4 -4
  6. data/lib/rbbt/persist/tsv.rb +4 -4
  7. data/lib/rbbt/persist/tsv/cdb.rb +3 -3
  8. data/lib/rbbt/persist/tsv/fix_width_table.rb +2 -2
  9. data/lib/rbbt/persist/tsv/kyotocabinet.rb +2 -2
  10. data/lib/rbbt/persist/tsv/leveldb.rb +2 -2
  11. data/lib/rbbt/persist/tsv/lmdb.rb +2 -2
  12. data/lib/rbbt/persist/tsv/packed_index.rb +2 -2
  13. data/lib/rbbt/persist/tsv/sharder.rb +4 -4
  14. data/lib/rbbt/persist/tsv/tokyocabinet.rb +2 -2
  15. data/lib/rbbt/resource.rb +6 -6
  16. data/lib/rbbt/resource/path.rb +7 -7
  17. data/lib/rbbt/resource/util.rb +9 -9
  18. data/lib/rbbt/rest/client/step.rb +8 -4
  19. data/lib/rbbt/tsv/attach.rb +21 -19
  20. data/lib/rbbt/tsv/parallel/traverse.rb +2 -2
  21. data/lib/rbbt/tsv/util.rb +1 -1
  22. data/lib/rbbt/util/R.rb +1 -1
  23. data/lib/rbbt/util/R/eval.rb +10 -10
  24. data/lib/rbbt/util/R/model.rb +2 -2
  25. data/lib/rbbt/util/docker.rb +3 -3
  26. data/lib/rbbt/util/filecache.rb +2 -2
  27. data/lib/rbbt/util/misc/development.rb +6 -4
  28. data/lib/rbbt/util/misc/lock.rb +1 -1
  29. data/lib/rbbt/util/misc/multipart_payload.rb +1 -1
  30. data/lib/rbbt/util/misc/pipes.rb +8 -8
  31. data/lib/rbbt/util/misc/system.rb +3 -3
  32. data/lib/rbbt/util/open.rb +9 -9
  33. data/lib/rbbt/util/simpleDSL.rb +2 -2
  34. data/lib/rbbt/util/tar.rb +1 -1
  35. data/lib/rbbt/util/tmpfile.rb +2 -2
  36. data/lib/rbbt/workflow.rb +26 -12
  37. data/lib/rbbt/workflow/accessor.rb +4 -4
  38. data/lib/rbbt/workflow/step/dependencies.rb +1 -1
  39. data/lib/rbbt/workflow/step/run.rb +6 -6
  40. data/share/rbbt_commands/app/install +2 -2
  41. data/share/rbbt_commands/app/start +1 -1
  42. data/share/rbbt_commands/log +5 -1
  43. data/share/rbbt_commands/resource/exists +1 -1
  44. data/share/rbbt_commands/study/task +3 -3
  45. data/share/rbbt_commands/system/clean +2 -2
  46. data/share/rbbt_commands/system/deleted_files +1 -1
  47. data/share/rbbt_commands/system/status +3 -3
  48. data/share/rbbt_commands/tsv/info +1 -1
  49. data/share/rbbt_commands/tsv/subset +1 -1
  50. data/share/rbbt_commands/workflow/example +1 -1
  51. data/share/rbbt_commands/workflow/install +3 -3
  52. data/share/rbbt_commands/workflow/monitor +6 -6
  53. data/share/rbbt_commands/workflow/prov +2 -2
  54. data/share/rbbt_commands/workflow/server +2 -2
  55. data/share/rbbt_commands/workflow/task +3 -3
  56. data/test/rbbt/test_resource.rb +2 -2
  57. data/test/rbbt/workflow/test_step.rb +3 -6
  58. metadata +2 -3
  59. data/lib/rbbt/util/misc/progress.rb +0 -0
@@ -22,7 +22,7 @@ module TSV
22
22
  if obj.done?
23
23
  path = obj.path
24
24
  path = path.find if path.respond_to? :find
25
- if File.exists? path
25
+ if File.exist? path
26
26
  CMD.cmd("wc -l '#{path}'").read.to_i
27
27
  else
28
28
  nil
@@ -39,7 +39,7 @@ module TSV
39
39
  CMD.cmd("wc -l '#{obj.path}'").read.to_i
40
40
  when Path, String
41
41
  obj = obj.find if Path === obj
42
- if File.exists? obj
42
+ if File.exist? obj
43
43
  return nil if Open.gzip?(obj) or Open.bgzip?(obj)
44
44
  CMD.cmd("wc -l '#{obj}'").read.to_i
45
45
  else
data/lib/rbbt/tsv/util.rb CHANGED
@@ -127,7 +127,7 @@ module TSV
127
127
  end
128
128
  file
129
129
  when String
130
- if Open.remote?(file) or File.exists? file
130
+ if Open.remote?(file) or File.exist? file
131
131
  Open.open(file, open_options)
132
132
  else
133
133
  StringIO.new file
data/lib/rbbt/util/R.rb CHANGED
@@ -31,7 +31,7 @@ source('#{UTIL}');
31
31
  case
32
32
  when IO === command
33
33
  cmd << command.read
34
- when File.exists?(command)
34
+ when File.exist?(command)
35
35
  cmd << File.open(command, 'r') do |f| f.read end
36
36
  else
37
37
  cmd << command
@@ -5,7 +5,7 @@ require 'rserve'
5
5
  module Rserve
6
6
  module TCPSocket
7
7
  def self.new(hostname, port_number)
8
- raise "Socket at #{hostname} not found" unless File.exists? hostname
8
+ raise "Socket at #{hostname} not found" unless File.exist? hostname
9
9
  @s = Socket.unix hostname
10
10
  end
11
11
  end
@@ -50,16 +50,16 @@ module R
50
50
  Log.warn "Error killing Rserve (#{@@instance_process}): #{$!.message}"
51
51
  end
52
52
  end
53
- FileUtils.rm_rf pid_file if File.exists? pid_file
54
- FileUtils.rm_rf socket_file if File.exists? socket_file
55
- FileUtils.rm_rf lockfile if File.exists? lockfile
56
- FileUtils.rm_rf workdir if File.exists? workdir
53
+ FileUtils.rm_rf pid_file if File.exist? pid_file
54
+ FileUtils.rm_rf socket_file if File.exist? socket_file
55
+ FileUtils.rm_rf lockfile if File.exist? lockfile
56
+ FileUtils.rm_rf workdir if File.exist? workdir
57
57
  end
58
58
 
59
59
  def self.instance
60
60
  @@instance ||= begin
61
61
 
62
- clear if File.exists? pid_file and ! Misc.pid_exists?(Open.read(pid_file).strip.to_i)
62
+ clear if File.exist? pid_file and ! Misc.pid_exists?(Open.read(pid_file).strip.to_i)
63
63
 
64
64
  FileUtils.mkdir_p File.dirname(socket_file) unless File.directory?(File.dirname(socket_file))
65
65
  FileUtils.mkdir_p workdir unless File.directory? workdir
@@ -70,7 +70,7 @@ module R
70
70
 
71
71
  begin
72
72
 
73
- if not File.exists? socket_file
73
+ if not File.exist? socket_file
74
74
 
75
75
  sh_pid = Process.fork do
76
76
  #args = %w(CMD Rserve --vanilla --quiet --RS-socket)
@@ -90,7 +90,7 @@ module R
90
90
  $stdout.reopen File.new('/dev/null', 'w')
91
91
  exec(ENV, cmd)
92
92
  end
93
- while not File.exists? pid_file
93
+ while not File.exist? pid_file
94
94
  sleep 0.5
95
95
  end
96
96
  @@instance_process = Open.read(pid_file).to_i
@@ -100,7 +100,7 @@ module R
100
100
  i = Rserve::Connection.new :hostname => socket_file
101
101
 
102
102
  begin
103
- FileUtils.mkdir workdir unless File.exists? workdir
103
+ FileUtils.mkdir workdir unless File.exist? workdir
104
104
  i.eval "setwd('#{workdir}');"
105
105
  i.eval "source('#{UTIL}');"
106
106
  i
@@ -111,7 +111,7 @@ module R
111
111
  rescue Exception
112
112
  Log.exception $!
113
113
  Process.kill :INT, @@instance_process if defined? @@instance_process and @@instance_process
114
- FileUtils.rm socket_file if File.exists? socket_file
114
+ FileUtils.rm socket_file if File.exist? socket_file
115
115
  retry if TryAgain === $!
116
116
  raise $!
117
117
  end
@@ -122,7 +122,7 @@ predict(model, data.frame(#{field} = #{R.ruby2R tsv}));
122
122
  end
123
123
 
124
124
  def exists?
125
- File.exists? model_file
125
+ File.exist? model_file
126
126
  end
127
127
 
128
128
  def fit(tsv, method='lm', args = {})
@@ -132,7 +132,7 @@ predict(model, data.frame(#{field} = #{R.ruby2R tsv}));
132
132
 
133
133
  tsv = Model.groom(tsv, formula)
134
134
 
135
- FileUtils.mkdir_p File.dirname(model_file) unless File.exists?(File.dirname(model_file))
135
+ FileUtils.mkdir_p File.dirname(model_file) unless File.exist?(File.dirname(model_file))
136
136
  roptions = r_options(tsv)
137
137
  tsv.R <<-EOF, roptions
138
138
  model = rbbt.model.fit(data, #{formula}, method=#{method}#{args_str})
@@ -3,7 +3,7 @@ module Docker
3
3
  mounts, job_inputs, directory, pipe = Misc.process_options options, :mounts, :job_inputs, :directory, :pipe
4
4
 
5
5
  if mounts
6
- mounts.each{|t,s| FileUtils.mkdir_p s unless File.exists? s}
6
+ mounts.each{|t,s| FileUtils.mkdir_p s unless File.exist? s}
7
7
  mount_cmd = mounts.sort.collect{|t,s| "-v " + ["'" + s + "'", "'" + t + "'"] * ":" } * " "
8
8
  else
9
9
  mount_cmd = ""
@@ -26,7 +26,7 @@ module Docker
26
26
  obj.join if obj.respond_to?(:join) and not obj.joined?
27
27
  end
28
28
  when String
29
- if obj.length < 256 and File.exists?(obj)
29
+ if obj.length < 256 and File.exist?(obj)
30
30
  FileUtils.cp obj, directory[name]
31
31
  else
32
32
  Open.write(directory[name], obj)
@@ -49,7 +49,7 @@ module Docker
49
49
  obj.join if obj.respond_to?(:join) and not obj.joined?
50
50
  end
51
51
  when String
52
- if obj.length < 256 and File.exists?(obj)
52
+ if obj.length < 256 and File.exist?(obj)
53
53
  FileUtils.cp obj, tmpfile[name]
54
54
  else
55
55
  Open.write(tmpfile[name], obj)
@@ -39,13 +39,13 @@ module FileCache
39
39
  end
40
40
 
41
41
  def self.found(filename)
42
- File.exists? FileCache.path(filename)
42
+ File.exist? FileCache.path(filename)
43
43
  end
44
44
 
45
45
  def self.get(filename)
46
46
  path = path(filename)
47
47
 
48
- return nil if ! File.exists? path
48
+ return nil if ! File.exist? path
49
49
 
50
50
  File.open(path)
51
51
  end
@@ -63,7 +63,7 @@ module Misc
63
63
  result = RubyProf.stop
64
64
  printer = RubyProf::MultiPrinter.new(result)
65
65
  TmpFile.with_file do |dir|
66
- FileUtils.mkdir_p dir unless File.exists? dir
66
+ FileUtils.mkdir_p dir unless File.exist? dir
67
67
  printer.print(:path => dir, :profile => 'profile')
68
68
  CMD.cmd("firefox -no-remote '#{ dir }'")
69
69
  end
@@ -284,7 +284,9 @@ module Misc
284
284
  num = :current if num.nil?
285
285
  cpus = case num
286
286
  when :current
287
- 10
287
+ n = 10
288
+ n = elems.length / 2 if n > elems.length/2
289
+ n
288
290
  when String
289
291
  num.to_i
290
292
  when Integer
@@ -363,7 +365,7 @@ module Misc
363
365
  ENV["PUSHBULLET_KEY"]
364
366
  else
365
367
  config_api = File.join(ENV['HOME'], 'config/apps/pushbullet/apikey')
366
- if File.exists? config_api
368
+ if File.exist? config_api
367
369
  File.read(config_api).strip
368
370
  else
369
371
  nil
@@ -386,7 +388,7 @@ module Misc
386
388
  end
387
389
 
388
390
  def self.unzip_in_dir(file, dir)
389
- raise "Target is not a directory: #{file}" if File.exists?(dir) and not File.directory?(dir)
391
+ raise "Target is not a directory: #{file}" if File.exist?(dir) and not File.directory?(dir)
390
392
  if Open.remote? file
391
393
  file = file.find if Path === file
392
394
  Open.open(file) do |stream|
@@ -23,7 +23,7 @@ module Misc
23
23
  return yield if file.nil? and not Lockfile === options[:lock]
24
24
 
25
25
  file = file.find if Path === file
26
- FileUtils.mkdir_p File.dirname(File.expand_path(file)) unless File.exists? File.dirname(File.expand_path(file))
26
+ FileUtils.mkdir_p File.dirname(File.expand_path(file)) unless File.exist? File.dirname(File.expand_path(file))
27
27
 
28
28
 
29
29
  case options[:lock]
@@ -69,7 +69,7 @@ module RbbtMutiplartPayload
69
69
  next if stream_input and input == stream_input.to_s
70
70
  content_str = case content
71
71
  when String
72
- if Misc.is_filename?(content) and File.exists?(content)
72
+ if Misc.is_filename?(content) and File.exist?(content)
73
73
  File.read(content)
74
74
  else
75
75
  content
@@ -331,7 +331,7 @@ module Misc
331
331
  Misc.consume_stream content
332
332
  else
333
333
  FileUtils.mkdir_p File.dirname(tmp_path) unless File.directory? File.dirname(tmp_path)
334
- FileUtils.rm_f tmp_path if File.exists? tmp_path
334
+ FileUtils.rm_f tmp_path if File.exist? tmp_path
335
335
  begin
336
336
  case
337
337
  when block_given?
@@ -355,7 +355,7 @@ module Misc
355
355
  Open.mv tmp_path, path, lock_options
356
356
  end
357
357
  rescue Exception
358
- raise $! unless File.exists? path
358
+ raise $! unless File.exist? path
359
359
  end
360
360
 
361
361
  content.join if content.respond_to? :join and not content.joined?
@@ -363,23 +363,23 @@ module Misc
363
363
  if Lockfile === lock_options[:lock] and lock_options[:lock].locked?
364
364
  lock_options[:lock].unlock
365
365
  end
366
- FileUtils.touch path if File.exists? path
366
+ FileUtils.touch path if File.exist? path
367
367
  Open.notify_write(path)
368
368
  rescue Aborted
369
369
  Log.medium "Aborted sensiblewrite -- #{ Log.reset << Log.color(:blue, path) }"
370
370
  content.abort if content.respond_to? :abort
371
- Open.rm path if File.exists? path
371
+ Open.rm path if File.exist? path
372
372
  rescue Exception
373
373
  Log.medium "Exception in sensiblewrite: [#{Process.pid}] #{$!.message} -- #{ Log.color :blue, path }"
374
374
  Log.exception $!
375
375
  content.abort if content.respond_to? :abort
376
- Open.rm path if File.exists? path
376
+ Open.rm path if File.exist? path
377
377
  raise $!
378
378
  rescue
379
379
  Log.exception $!
380
380
  raise $!
381
381
  ensure
382
- FileUtils.rm_f tmp_path if File.exists? tmp_path
382
+ FileUtils.rm_f tmp_path if File.exist? tmp_path
383
383
  end
384
384
  end
385
385
  end
@@ -607,7 +607,7 @@ module Misc
607
607
  else
608
608
  erase = []
609
609
 
610
- if Path === stream1 or (String === stream1 and File.exists? stream1)
610
+ if Path === stream1 or (String === stream1 and File.exist? stream1)
611
611
  file1 = stream1
612
612
  else
613
613
  file1 = TmpFile.tmp_file
@@ -615,7 +615,7 @@ module Misc
615
615
  Open.write(file1, TSV.get_stream(stream1))
616
616
  end
617
617
 
618
- if Path === stream2 or (String === stream2 and File.exists? stream2)
618
+ if Path === stream2 or (String === stream2 and File.exist? stream2)
619
619
  file2 = stream2
620
620
  else
621
621
  file2 = TmpFile.tmp_file
@@ -78,7 +78,7 @@ end
78
78
  old_pwd = FileUtils.pwd
79
79
  res = nil
80
80
  begin
81
- FileUtils.mkdir_p dir unless File.exists? dir
81
+ FileUtils.mkdir_p dir unless File.exist? dir
82
82
  FileUtils.cd dir
83
83
  res = yield
84
84
  ensure
@@ -88,12 +88,12 @@ end
88
88
  end
89
89
 
90
90
  def self.filename?(string)
91
- String === string and string.length > 0 and string.length < 250 and File.exists?(string)
91
+ String === string and string.length > 0 and string.length < 250 and File.exist?(string)
92
92
  end
93
93
 
94
94
  def self.is_filename?(string)
95
95
  return true if string.respond_to? :exists
96
- return true if String === string and string.length < 265 and File.exists? string
96
+ return true if String === string and string.length < 265 and File.exist? string
97
97
  return false
98
98
  end
99
99
 
@@ -17,7 +17,7 @@ module Open
17
17
 
18
18
  def repository_dirs
19
19
  @repository_dirs ||= begin
20
- File.exists?(Rbbt.etc.repository_dirs.find) ?
20
+ File.exist?(Rbbt.etc.repository_dirs.find) ?
21
21
  File.read(Rbbt.etc.repository_dirs.find).split("\n") :
22
22
  []
23
23
  rescue
@@ -100,7 +100,7 @@ module Open
100
100
  #
101
101
  def self.in_cache(url, options = {})
102
102
  filename = File.join(REMOTE_CACHEDIR, digest_url(url, options))
103
- if File.exists? filename
103
+ if File.exist? filename
104
104
  return filename
105
105
  else
106
106
  nil
@@ -111,7 +111,7 @@ module Open
111
111
  digest = Misc.digest([url, options.values_at("--post-data", "--post-data="), (options.include?("--post-file")? Open.read(options["--post-file"]) : "")].inspect)
112
112
 
113
113
  filename = File.join(REMOTE_CACHEDIR, digest)
114
- if File.exists? filename
114
+ if File.exist? filename
115
115
  FileUtils.rm filename
116
116
  else
117
117
  nil
@@ -239,7 +239,7 @@ module Open
239
239
  dir_sub_path_target = find_repo_dir(target)
240
240
 
241
241
  if dir_sub_path_source.nil? and dir_sub_path_target.nil?
242
- FileUtils.mkdir_p File.dirname(target) unless File.exists? File.dirname(target)
242
+ FileUtils.mkdir_p File.dirname(target) unless File.exist? File.dirname(target)
243
243
  return FileUtils.mv source, target
244
244
  end
245
245
 
@@ -271,7 +271,7 @@ module Open
271
271
  exists_in_repo(*dir_sub_path)
272
272
  else
273
273
  file = file.find if Path === file
274
- File.exists? file
274
+ File.exist? file
275
275
  end
276
276
  end
277
277
 
@@ -409,7 +409,7 @@ module Open
409
409
  end
410
410
 
411
411
  def self.can_open?(file)
412
- String === file and (File.exists?(file) or remote?(file))
412
+ String === file and (File.exist?(file) or remote?(file))
413
413
  end
414
414
 
415
415
  def self.read(file, options = {}, &block)
@@ -431,7 +431,7 @@ module Open
431
431
  def self.notify_write(file)
432
432
  begin
433
433
  notification_file = file + '.notify'
434
- if File.exists? notification_file
434
+ if File.exist? notification_file
435
435
  key = Open.read(notification_file).strip
436
436
  key = nil if key.empty?
437
437
  Misc.notify("Wrote " << file, nil, key)
@@ -456,7 +456,7 @@ module Open
456
456
  yield f
457
457
  end
458
458
  rescue Exception
459
- FileUtils.rm file if File.exists? file
459
+ FileUtils.rm file if File.exist? file
460
460
  raise $!
461
461
  end
462
462
  when content.nil?
@@ -473,7 +473,7 @@ module Open
473
473
  f.flock(File::LOCK_UN)
474
474
  end
475
475
  rescue Exception
476
- FileUtils.rm_rf file if File.exists? file
476
+ FileUtils.rm_rf file if File.exist? file
477
477
  raise $!
478
478
  end
479
479
  content.close
@@ -49,7 +49,7 @@ module SimpleDSL
49
49
  end
50
50
 
51
51
  instance_eval &actions
52
- elsif File.exists?(actions)
52
+ elsif File.exist?(actions)
53
53
 
54
54
  @config[@@method_name] = File.open(actions).read
55
55
 
@@ -67,7 +67,7 @@ module SimpleDSL
67
67
  def load_config(method = nil, file = nil, &block)
68
68
  @config = {}
69
69
  if file
70
- raise ConfigFileMissingError.new "Config file '#{ file }' is missing" unless File.exists? file
70
+ raise ConfigFileMissingError.new "Config file '#{ file }' is missing" unless File.exist? file
71
71
  parse(method, file)
72
72
  end
73
73
 
data/lib/rbbt/util/tar.rb CHANGED
@@ -84,7 +84,7 @@ module Misc
84
84
  end
85
85
 
86
86
  def self._untar_cmd(io, destination)
87
- FileUtils.mkdir_p destination unless File.exists? destination
87
+ FileUtils.mkdir_p destination unless File.exist? destination
88
88
  CMD.cmd("tar xvf - -C '#{destination}'", :in => io)
89
89
  nil
90
90
  end
@@ -42,7 +42,7 @@ module TmpFile
42
42
 
43
43
  result = yield(tmpfile)
44
44
 
45
- FileUtils.rm_rf tmpfile if File.exists?(tmpfile) and erase
45
+ FileUtils.rm_rf tmpfile if File.exist?(tmpfile) and erase
46
46
 
47
47
  result
48
48
  end
@@ -54,7 +54,7 @@ module TmpFile
54
54
 
55
55
  result = yield(tmpdir)
56
56
 
57
- FileUtils.rm_rf tmpdir if File.exists?(tmpdir) and erase
57
+ FileUtils.rm_rf tmpdir if File.exist?(tmpdir) and erase
58
58
 
59
59
  result
60
60
  end
data/lib/rbbt/workflow.rb CHANGED
@@ -39,14 +39,18 @@ module Workflow
39
39
  eval "Object::#{wf_name} = WorkflowRESTClient.new '#{ url }', '#{wf_name}'"
40
40
  end
41
41
 
42
+ def self.load_workflow_libdir(filename)
43
+ workflow_lib_dir = File.join(File.dirname(File.expand_path(filename)), 'lib')
44
+ if File.directory? workflow_lib_dir
45
+ Log.debug "Adding workflow lib directory to LOAD_PATH: #{workflow_lib_dir}"
46
+ $LOAD_PATH.unshift(workflow_lib_dir)
47
+ end
48
+ end
49
+
42
50
  def self.load_workflow_file(filename)
43
51
  begin
44
- workflow_lib_dir = File.join(File.dirname(File.expand_path(filename)), 'lib')
45
- #$LOAD_PATH.unshift(File.join(File.dirname(File.expand_path(filename)), 'lib'))
46
- if File.directory? workflow_lib_dir
47
- Log.debug "Adding workflow lib directory to LOAD_PATH: #{workflow_lib_dir}"
48
- $LOAD_PATH.unshift(workflow_lib_dir)
49
- end
52
+
53
+ load_workflow_libdir(filename)
50
54
 
51
55
  filename = File.expand_path(filename)
52
56
 
@@ -81,29 +85,40 @@ module Workflow
81
85
  end
82
86
  end
83
87
 
84
- def self.require_local_workflow(wf_name)
88
+ def self.local_workflow_filename(wf_name)
85
89
  filename = nil
86
90
 
87
91
  if Path === wf_name
88
92
  case
89
93
  # Points to workflow file
90
- when ((File.exists?(wf_name.find) and not File.directory?(wf_name.find)) or File.exists?(wf_name.find + '.rb'))
94
+ when ((File.exist?(wf_name.find) and not File.directory?(wf_name.find)) or File.exist?(wf_name.find + '.rb'))
91
95
  filename = wf_name.find
92
96
 
93
97
  # Points to workflow dir
94
- when (File.exists?(wf_name.find) and File.directory?(wf_name.find) and File.exists?(File.join(wf_name.find, 'workflow.rb')))
98
+ when (File.exist?(wf_name.find) and File.directory?(wf_name.find) and File.exist?(File.join(wf_name.find, 'workflow.rb')))
95
99
  filename = wf_name['workflow.rb'].find
96
100
  end
97
101
 
98
102
  else
99
- if ((File.exists?(wf_name) and not File.directory?(wf_name)) or File.exists?(wf_name + '.rb'))
103
+ if ((File.exist?(wf_name) and not File.directory?(wf_name)) or File.exist?(wf_name + '.rb'))
100
104
  filename = (wf_name =~ /\.?\//) ? wf_name : "./" << wf_name
101
105
  else
102
106
  filename = workflow_dir[wf_name]['workflow.rb'].find
103
107
  end
104
108
  end
105
109
 
106
- if filename and File.exists? filename
110
+ if filename.nil? or not File.exist?(filename)
111
+ wf_name_snake = Misc.snake_case(wf_name)
112
+ return local_workflow_filename(wf_name_snake) if wf_name_snake != wf_name
113
+ end
114
+
115
+ filename
116
+ end
117
+
118
+ def self.require_local_workflow(wf_name)
119
+ filename = local_workflow_filename(wf_name)
120
+
121
+ if filename and File.exist? filename
107
122
  load_workflow_file filename
108
123
  else
109
124
  return false
@@ -153,7 +168,6 @@ module Workflow
153
168
 
154
169
  Log.info{"Loading workflow #{wf_name}"}
155
170
  require_local_workflow(wf_name) or
156
- require_local_workflow(Misc.snake_case(wf_name)) or
157
171
  (Workflow.autoinstall and `rbbt workflow install #{Misc.snake_case(wf_name)}` and require_local_workflow(Misc.snake_case(wf_name))) or
158
172
  raise("Workflow not found or could not be loaded: #{ wf_name }")
159
173
  begin