iron_worker_ng 0.7.4 → 0.8.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 (39) hide show
  1. data/README.md +6 -7
  2. data/VERSION +1 -1
  3. data/bin/iron_worker +15 -42
  4. data/lib/iron_worker_ng/api_client.rb +33 -24
  5. data/lib/iron_worker_ng/client.rb +49 -10
  6. data/lib/iron_worker_ng/code/base.rb +136 -39
  7. data/lib/iron_worker_ng/code/binary.rb +4 -10
  8. data/lib/iron_worker_ng/code/builder.rb +10 -4
  9. data/lib/iron_worker_ng/code/java.rb +4 -22
  10. data/lib/iron_worker_ng/code/mono.rb +13 -0
  11. data/lib/iron_worker_ng/code/node.rb +4 -8
  12. data/lib/iron_worker_ng/code/php.rb +13 -0
  13. data/lib/iron_worker_ng/code/python.rb +13 -0
  14. data/lib/iron_worker_ng/code/ruby.rb +4 -89
  15. data/lib/iron_worker_ng/code/runtime/binary.rb +19 -0
  16. data/lib/iron_worker_ng/code/runtime/java.rb +31 -0
  17. data/lib/iron_worker_ng/code/runtime/mono.rb +17 -0
  18. data/lib/iron_worker_ng/code/runtime/node.rb +17 -0
  19. data/lib/iron_worker_ng/code/runtime/php.rb +59 -0
  20. data/lib/iron_worker_ng/code/runtime/python.rb +17 -0
  21. data/lib/iron_worker_ng/code/runtime/ruby.rb +96 -0
  22. data/lib/iron_worker_ng/feature/base.rb +1 -2
  23. data/lib/iron_worker_ng/feature/binary/merge_exec.rb +3 -5
  24. data/lib/iron_worker_ng/feature/common/merge_dir.rb +0 -4
  25. data/lib/iron_worker_ng/feature/common/merge_file.rb +0 -4
  26. data/lib/iron_worker_ng/feature/java/merge_exec.rb +3 -5
  27. data/lib/iron_worker_ng/feature/java/merge_jar.rb +0 -4
  28. data/lib/iron_worker_ng/feature/mono/merge_exec.rb +51 -0
  29. data/lib/iron_worker_ng/feature/node/merge_exec.rb +3 -5
  30. data/lib/iron_worker_ng/feature/php/merge_exec.rb +51 -0
  31. data/lib/iron_worker_ng/feature/python/merge_exec.rb +51 -0
  32. data/lib/iron_worker_ng/feature/ruby/merge_exec.rb +3 -5
  33. data/lib/iron_worker_ng/feature/ruby/merge_gem.rb +4 -4
  34. data/lib/iron_worker_ng/feature/ruby/merge_gemfile.rb +0 -4
  35. data/lib/iron_worker_ng.rb +9 -1
  36. data/remote_test.rb +3 -1
  37. metadata +18 -7
  38. data/lib/iron_worker_ng/code/creator.rb +0 -63
  39. data/lib/iron_worker_ng/code/initializer.rb +0 -76
@@ -0,0 +1,96 @@
1
+ require_relative '../../feature/ruby/merge_gem'
2
+ require_relative '../../feature/ruby/merge_gemfile'
3
+ require_relative '../../feature/ruby/merge_exec'
4
+
5
+ module IronWorkerNG
6
+ module Code
7
+ module Runtime
8
+ module Ruby
9
+ include IronWorkerNG::Feature::Ruby::MergeGem::InstanceMethods
10
+ include IronWorkerNG::Feature::Ruby::MergeGemfile::InstanceMethods
11
+ include IronWorkerNG::Feature::Ruby::MergeExec::InstanceMethods
12
+
13
+ def runtime_bundle(zip)
14
+ zip.get_output_stream(@dest_dir + '__runner__.rb') do |runner|
15
+ runner.write <<RUBY_RUNNER
16
+ # #{IronWorkerNG.full_version}
17
+
18
+ module IronWorkerNG
19
+ #{File.read(File.dirname(__FILE__) + '/../../../3rdparty/hashie/merge_initializer.rb')}
20
+ #{File.read(File.dirname(__FILE__) + '/../../../3rdparty/hashie/indifferent_access.rb')}
21
+ end
22
+
23
+ class IronWorkerNGHash < Hash
24
+ include IronWorkerNG::Hashie::Extensions::MergeInitializer
25
+ include IronWorkerNG::Hashie::Extensions::IndifferentAccess
26
+ end
27
+
28
+ root = nil
29
+ payload_file = nil
30
+ task_id = nil
31
+
32
+ 0.upto($*.length - 2) do |i|
33
+ root = $*[i + 1] if $*[i] == '-d'
34
+ payload_file = $*[i + 1] if $*[i] == '-payload'
35
+ task_id = $*[i + 1] if $*[i] == '-id'
36
+ end
37
+
38
+ ENV['GEM_PATH'] = ([root + '__gems__'] + (ENV['GEM_PATH'] || '').split(':')).join(':')
39
+
40
+ $:.unshift("\#{root}")
41
+
42
+ require 'json'
43
+
44
+ @iron_task_id = task_id
45
+
46
+ @payload = File.read(payload_file)
47
+
48
+ params = {}
49
+ begin
50
+ params = JSON.parse(@payload)
51
+ rescue
52
+ end
53
+
54
+ @params = IronWorkerNGHash.new(params)
55
+
56
+ def payload
57
+ @payload
58
+ end
59
+
60
+ def params
61
+ @params
62
+ end
63
+
64
+ def iron_task_id
65
+ @iron_task_id
66
+ end
67
+
68
+ require '#{File.basename(@exec.path)}'
69
+
70
+ unless #{@exec.klass == nil}
71
+ exec_class = Kernel.const_get('#{@exec.klass}')
72
+ exec_inst = exec_class.new
73
+
74
+ params.keys.each do |param|
75
+ if param.class == String
76
+ if exec_inst.respond_to?(param + '=')
77
+ exec_inst.send(param + '=', params[param])
78
+ end
79
+ end
80
+ end
81
+
82
+ exec_inst.run
83
+ end
84
+ RUBY_RUNNER
85
+ end
86
+ end
87
+
88
+ def runtime_run_code
89
+ <<RUN_CODE
90
+ ruby __runner__.rb "$@"
91
+ RUN_CODE
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -17,8 +17,7 @@ module IronWorkerNG
17
17
  new_src = File.expand_path(new_src) unless new_src.nil?
18
18
 
19
19
  if new_src.nil? || (not File.exists?(new_src))
20
- IronCore::Logger.error 'IronWorkerNG', "Can't find src with path='#{src}'"
21
- raise IronCore::IronError.new("Can't find src with path='#{src}'")
20
+ IronCore::Logger.error 'IronWorkerNG', "Can't find src with path='#{src}'", IronCore::Error
22
21
  end
23
22
 
24
23
  src = new_src
@@ -23,9 +23,11 @@ module IronWorkerNG
23
23
  end
24
24
 
25
25
  module InstanceMethods
26
- def merge_exec(path)
26
+ def merge_exec(path=nil)
27
27
  @exec ||= nil
28
28
 
29
+ return @exec unless path
30
+
29
31
  unless @exec.nil?
30
32
  IronCore::Logger.warn 'IronWorkerNG', "Ignoring attempt to merge binary exec with path='#{path}'"
31
33
  return
@@ -42,10 +44,6 @@ module IronWorkerNG
42
44
 
43
45
  alias :merge_worker :merge_exec
44
46
  alias :worker :merge_worker
45
-
46
- def self.included(base)
47
- IronWorkerNG::Code::Base.register_feature(:name => 'merge_exec', :for_klass => base, :args => 'PATH')
48
- end
49
47
  end
50
48
  end
51
49
  end
@@ -41,10 +41,6 @@ module IronWorkerNG
41
41
  end
42
42
 
43
43
  alias :dir :merge_dir
44
-
45
- def self.included(base)
46
- IronWorkerNG::Code::Base.register_feature(:name => 'merge_dir', :for_klass => base, :args => 'PATH[,DEST]')
47
- end
48
44
  end
49
45
  end
50
46
  end
@@ -35,10 +35,6 @@ module IronWorkerNG
35
35
  end
36
36
 
37
37
  alias :file :merge_file
38
-
39
- def self.included(base)
40
- IronWorkerNG::Code::Base.register_feature(:name => 'merge_file', :for_klass => base, :args => 'PATH[,DEST]')
41
- end
42
38
  end
43
39
  end
44
40
  end
@@ -29,9 +29,11 @@ module IronWorkerNG
29
29
  end
30
30
 
31
31
  module InstanceMethods
32
- def merge_exec(path, klass = nil)
32
+ def merge_exec(path = nil, klass = nil)
33
33
  @exec ||= nil
34
34
 
35
+ return @exec unless path
36
+
35
37
  unless @exec.nil?
36
38
  IronCore::Logger.warn 'IronWorkerNG', "Ignoring attempt to merge java exec with path='#{path}' and class='#{klass}'"
37
39
  return
@@ -48,10 +50,6 @@ module IronWorkerNG
48
50
 
49
51
  alias :merge_worker :merge_exec
50
52
  alias :worker :merge_worker
51
-
52
- def self.included(base)
53
- IronWorkerNG::Code::Base.register_feature(:name => 'merge_exec', :for_klass => base, :args => 'PATH,CLASS')
54
- end
55
53
  end
56
54
  end
57
55
  end
@@ -34,10 +34,6 @@ module IronWorkerNG
34
34
  end
35
35
 
36
36
  alias :jar :merge_jar
37
-
38
- def self.included(base)
39
- IronWorkerNG::Code::Base.register_feature(:name => 'merge_jar', :for_klass => base, :args => 'PATH')
40
- end
41
37
  end
42
38
  end
43
39
  end
@@ -0,0 +1,51 @@
1
+ module IronWorkerNG
2
+ module Feature
3
+ module Mono
4
+ module MergeExec
5
+ class Feature < IronWorkerNG::Feature::Base
6
+ attr_reader :path
7
+
8
+ def initialize(code, path)
9
+ super(code)
10
+
11
+ @path = path
12
+ end
13
+
14
+ def hash_string
15
+ Digest::MD5.hexdigest(@path + File.mtime(rebase(@path)).to_i.to_s)
16
+ end
17
+
18
+ def bundle(zip)
19
+ IronCore::Logger.debug 'IronWorkerNG', "Bundling mono exec with path='#{@path}'"
20
+
21
+ zip_add(zip, File.basename(@path), rebase(@path))
22
+ end
23
+ end
24
+
25
+ module InstanceMethods
26
+ def merge_exec(path=nil)
27
+ @exec ||= nil
28
+
29
+ return @exec unless path
30
+
31
+ unless @exec.nil?
32
+ IronCore::Logger.warn 'IronWorkerNG', "Ignoring attempt to merge mono exec with path='#{path}'"
33
+ return
34
+ end
35
+
36
+ @exec = IronWorkerNG::Feature::Mono::MergeExec::Feature.new(self, path)
37
+
38
+ IronCore::Logger.info 'IronWorkerNG', "Merging mono exec with path='#{path}'"
39
+
40
+ @features << @exec
41
+ end
42
+
43
+ alias :exec :merge_exec
44
+
45
+ alias :merge_worker :merge_exec
46
+ alias :worker :merge_worker
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -23,9 +23,11 @@ module IronWorkerNG
23
23
  end
24
24
 
25
25
  module InstanceMethods
26
- def merge_exec(path)
26
+ def merge_exec(path=nil)
27
27
  @exec ||= nil
28
28
 
29
+ return @exec unless path
30
+
29
31
  unless @exec.nil?
30
32
  IronCore::Logger.warn 'IronWorkerNG', "Ignoring attempt to merge node exec with path='#{path}'"
31
33
  return
@@ -42,10 +44,6 @@ module IronWorkerNG
42
44
 
43
45
  alias :merge_worker :merge_exec
44
46
  alias :worker :merge_worker
45
-
46
- def self.included(base)
47
- IronWorkerNG::Code::Base.register_feature(:name => 'merge_exec', :for_klass => base, :args => 'PATH')
48
- end
49
47
  end
50
48
  end
51
49
  end
@@ -0,0 +1,51 @@
1
+ module IronWorkerNG
2
+ module Feature
3
+ module PHP
4
+ module MergeExec
5
+ class Feature < IronWorkerNG::Feature::Base
6
+ attr_reader :path
7
+
8
+ def initialize(code, path)
9
+ super(code)
10
+
11
+ @path = path
12
+ end
13
+
14
+ def hash_string
15
+ Digest::MD5.hexdigest(@path + File.mtime(rebase(@path)).to_i.to_s)
16
+ end
17
+
18
+ def bundle(zip)
19
+ IronCore::Logger.debug 'IronWorkerNG', "Bundling php exec with path='#{@path}'"
20
+
21
+ zip_add(zip, File.basename(@path), rebase(@path))
22
+ end
23
+ end
24
+
25
+ module InstanceMethods
26
+ def merge_exec(path=nil)
27
+ @exec ||= nil
28
+
29
+ return @exec unless path
30
+
31
+ unless @exec.nil?
32
+ IronCore::Logger.warn 'IronWorkerNG', "Ignoring attempt to merge php exec with path='#{path}'"
33
+ return
34
+ end
35
+
36
+ @exec = IronWorkerNG::Feature::PHP::MergeExec::Feature.new(self, path)
37
+
38
+ IronCore::Logger.info 'IronWorkerNG', "Merging php exec with path='#{path}'"
39
+
40
+ @features << @exec
41
+ end
42
+
43
+ alias :exec :merge_exec
44
+
45
+ alias :merge_worker :merge_exec
46
+ alias :worker :merge_worker
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,51 @@
1
+ module IronWorkerNG
2
+ module Feature
3
+ module Python
4
+ module MergeExec
5
+ class Feature < IronWorkerNG::Feature::Base
6
+ attr_reader :path
7
+
8
+ def initialize(code, path)
9
+ super(code)
10
+
11
+ @path = path
12
+ end
13
+
14
+ def hash_string
15
+ Digest::MD5.hexdigest(@path + File.mtime(rebase(@path)).to_i.to_s)
16
+ end
17
+
18
+ def bundle(zip)
19
+ IronCore::Logger.debug 'IronWorkerNG', "Bundling python exec with path='#{@path}'"
20
+
21
+ zip_add(zip, File.basename(@path), rebase(@path))
22
+ end
23
+ end
24
+
25
+ module InstanceMethods
26
+ def merge_exec(path=nil)
27
+ @exec ||= nil
28
+
29
+ return @exec unless path
30
+
31
+ unless @exec.nil?
32
+ IronCore::Logger.warn 'IronWorkerNG', "Ignoring attempt to merge python exec with path='#{path}'"
33
+ return
34
+ end
35
+
36
+ @exec = IronWorkerNG::Feature::Python::MergeExec::Feature.new(self, path)
37
+
38
+ IronCore::Logger.info 'IronWorkerNG', "Merging python exec with path='#{path}'"
39
+
40
+ @features << @exec
41
+ end
42
+
43
+ alias :exec :merge_exec
44
+
45
+ alias :merge_worker :merge_exec
46
+ alias :worker :merge_worker
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -25,9 +25,11 @@ module IronWorkerNG
25
25
  end
26
26
 
27
27
  module InstanceMethods
28
- def merge_exec(path, klass = nil)
28
+ def merge_exec(path = nil, klass = nil)
29
29
  @exec ||= nil
30
30
 
31
+ return @exec unless path
32
+
31
33
  unless @exec.nil?
32
34
  IronCore::Logger.warn 'IronWorkerNG', "Ignoring attempt to merge ruby exec with path='#{path}' and class='#{klass}'"
33
35
  return
@@ -44,10 +46,6 @@ module IronWorkerNG
44
46
 
45
47
  alias :merge_worker :merge_exec
46
48
  alias :worker :merge_worker
47
-
48
- def self.included(base)
49
- IronWorkerNG::Code::Base.register_feature(:name => 'merge_exec', :for_klass => base, :args => 'PATH[,CLASS]')
50
- end
51
49
  end
52
50
  end
53
51
  end
@@ -57,6 +57,10 @@ module IronWorkerNG
57
57
 
58
58
  @merge_gem_reqs ||= []
59
59
  @merge_gem_reqs << Bundler::Dependency.new(name, version.split(', '))
60
+
61
+ unless @fixators.include?(:merge_gem_fixate)
62
+ @fixators << :merge_gem_fixate
63
+ end
60
64
  end
61
65
 
62
66
  alias :gem :merge_gem
@@ -94,10 +98,6 @@ module IronWorkerNG
94
98
  end
95
99
  end
96
100
  end
97
-
98
- def self.included(base)
99
- IronWorkerNG::Code::Base.register_feature(:name => 'merge_gem', :for_klass => base, :args => 'NAME[,VERSION]')
100
- end
101
101
  end
102
102
  end
103
103
  end
@@ -37,10 +37,6 @@ module IronWorkerNG
37
37
  end
38
38
 
39
39
  alias :gemfile :merge_gemfile
40
-
41
- def self.included(base)
42
- IronWorkerNG::Code::Base.register_feature(:name => 'merge_gemfile', :for_klass => base, :args => 'PATH[,GROUP...]')
43
- end
44
40
  end
45
41
  end
46
42
  end
@@ -1,4 +1,12 @@
1
1
  require_relative 'iron_worker_ng/version'
2
2
  require_relative 'iron_worker_ng/fetcher'
3
3
  require_relative 'iron_worker_ng/client'
4
- require_relative 'iron_worker_ng/code/creator'
4
+ require_relative 'iron_worker_ng/code/base'
5
+ require_relative 'iron_worker_ng/code/ruby'
6
+ require_relative 'iron_worker_ng/code/binary'
7
+ require_relative 'iron_worker_ng/code/java'
8
+ require_relative 'iron_worker_ng/code/node'
9
+ require_relative 'iron_worker_ng/code/mono'
10
+ require_relative 'iron_worker_ng/code/python'
11
+ require_relative 'iron_worker_ng/code/php'
12
+ require_relative 'iron_worker_ng/code/builder'
data/remote_test.rb CHANGED
@@ -17,7 +17,9 @@ require_relative 'test/iron_io_config.rb'
17
17
 
18
18
  client = IronWorkerNG::Client.new
19
19
 
20
- code = IronWorkerNG::Code::Ruby.new do
20
+ code = IronWorkerNG::Code.new do
21
+ runtime 'ruby'
22
+
21
23
  exec 'ng_tests_worker.rb'
22
24
  gemfile 'Gemfile'
23
25
  gemfile 'test/Gemfile'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iron_worker_ng
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 0.8.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-06-26 00:00:00.000000000 Z
13
+ date: 2012-07-10 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: iron_core
@@ -19,7 +19,7 @@ dependencies:
19
19
  requirements:
20
20
  - - ! '>='
21
21
  - !ruby/object:Gem::Version
22
- version: 0.1.4
22
+ version: 0.2.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,7 +27,7 @@ dependencies:
27
27
  requirements:
28
28
  - - ! '>='
29
29
  - !ruby/object:Gem::Version
30
- version: 0.1.4
30
+ version: 0.2.0
31
31
  - !ruby/object:Gem::Dependency
32
32
  name: zip
33
33
  requirement: !ruby/object:Gem::Requirement
@@ -113,18 +113,29 @@ files:
113
113
  - lib/iron_worker_ng/code/base.rb
114
114
  - lib/iron_worker_ng/code/binary.rb
115
115
  - lib/iron_worker_ng/code/builder.rb
116
- - lib/iron_worker_ng/code/creator.rb
117
- - lib/iron_worker_ng/code/initializer.rb
118
116
  - lib/iron_worker_ng/code/java.rb
117
+ - lib/iron_worker_ng/code/mono.rb
119
118
  - lib/iron_worker_ng/code/node.rb
119
+ - lib/iron_worker_ng/code/php.rb
120
+ - lib/iron_worker_ng/code/python.rb
120
121
  - lib/iron_worker_ng/code/ruby.rb
122
+ - lib/iron_worker_ng/code/runtime/binary.rb
123
+ - lib/iron_worker_ng/code/runtime/java.rb
124
+ - lib/iron_worker_ng/code/runtime/mono.rb
125
+ - lib/iron_worker_ng/code/runtime/node.rb
126
+ - lib/iron_worker_ng/code/runtime/php.rb
127
+ - lib/iron_worker_ng/code/runtime/python.rb
128
+ - lib/iron_worker_ng/code/runtime/ruby.rb
121
129
  - lib/iron_worker_ng/feature/base.rb
122
130
  - lib/iron_worker_ng/feature/binary/merge_exec.rb
123
131
  - lib/iron_worker_ng/feature/common/merge_dir.rb
124
132
  - lib/iron_worker_ng/feature/common/merge_file.rb
125
133
  - lib/iron_worker_ng/feature/java/merge_exec.rb
126
134
  - lib/iron_worker_ng/feature/java/merge_jar.rb
135
+ - lib/iron_worker_ng/feature/mono/merge_exec.rb
127
136
  - lib/iron_worker_ng/feature/node/merge_exec.rb
137
+ - lib/iron_worker_ng/feature/php/merge_exec.rb
138
+ - lib/iron_worker_ng/feature/python/merge_exec.rb
128
139
  - lib/iron_worker_ng/feature/ruby/merge_exec.rb
129
140
  - lib/iron_worker_ng/feature/ruby/merge_gem.rb
130
141
  - lib/iron_worker_ng/feature/ruby/merge_gemfile.rb
@@ -146,7 +157,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
146
157
  version: '0'
147
158
  segments:
148
159
  - 0
149
- hash: -96405151
160
+ hash: -271964877
150
161
  required_rubygems_version: !ruby/object:Gem::Requirement
151
162
  none: false
152
163
  requirements:
@@ -1,63 +0,0 @@
1
- require_relative 'initializer'
2
- require_relative 'base'
3
- require_relative 'ruby'
4
- require_relative 'java'
5
- require_relative 'node'
6
- require_relative 'binary'
7
- require_relative 'builder'
8
-
9
- module IronWorkerNG
10
- module Code
11
- class Creator
12
- include IronWorkerNG::Code::Initializer::InstanceMethods
13
-
14
- def self.create(*args, &block)
15
- runtime = IronWorkerNG::Code::Creator.new(*args, &block).runtime || 'ruby'
16
-
17
- IronWorkerNG::Code::Base.registered_types.find { |r| r[:name] == runtime }[:klass].new(*args, &block)
18
- end
19
-
20
- def initialize(*args, &block)
21
- initialize_code(*args, &block)
22
- end
23
-
24
- def name(name = nil)
25
- @name = name if name
26
-
27
- @name
28
- end
29
-
30
- def name=(name)
31
- @name = name
32
- end
33
-
34
- def remote_build_command(remote_build_command = nil)
35
- end
36
-
37
- def remote_build_command=(remote_build_command)
38
- end
39
-
40
- def runtime(*args)
41
- @runtime = args[0] if args.length == 1
42
-
43
- @runtime
44
- end
45
-
46
- def runtime=(runtime)
47
- @runtime = runtime
48
- end
49
-
50
- def merge_exec(path, *args)
51
- @exec = OpenStruct.new(:path => path)
52
- end
53
-
54
- alias :exec :merge_exec
55
-
56
- alias :merge_worker :merge_exec
57
- alias :worker :merge_worker
58
-
59
- def method_missing(name, *args)
60
- end
61
- end
62
- end
63
- end
@@ -1,76 +0,0 @@
1
- module IronWorkerNG
2
- module Code
3
- module Initializer
4
- module InstanceMethods
5
- def initialize_code(*args, &block)
6
- @name = nil
7
- @exec = nil
8
-
9
- wfiles = []
10
-
11
- if args.length == 1 && args[0].class == String
12
- name = args[0]
13
-
14
- if name.end_with?('.worker') || name.end_with?('.workerfile')
15
- @name = name.gsub(/\.worker$/, '').gsub(/\.workerfile$/, '')
16
- else
17
- merge_exec(name)
18
- end
19
- elsif args.length == 1 && args[0].class == Hash
20
- @name = args[0][:name] || args[0]['name']
21
-
22
- unless @name.nil?
23
- if @name.end_with?('.worker') || @name.end_with?('.workerfile')
24
- @name = @name.gsub(/\.worker$/, '').gsub(/\.workerfile$/, '')
25
- end
26
- end
27
-
28
- exec = args[0][:exec] || args[0]['exec'] || args[0][:worker] || args[0]['worker']
29
- merge_exec(exec) unless exec.nil?
30
- end
31
-
32
- if args.length == 1 && args[0].class == Hash && (args[0][:workerfile] || args[0]['workerfile'])
33
- wfiles << args[0][:workerfile] || args[0]['workerfile']
34
- end
35
-
36
- if @name.nil? and @exec
37
- @name = guess_name_for_path(@exec.path)
38
- end
39
-
40
- unless @name.nil?
41
- wfiles << @name + '.worker'
42
- wfiles << @name + '.workerfile'
43
- end
44
-
45
- wfiles << 'Workerfile'
46
-
47
- wfiles.each do |wfile|
48
- src, clean = IronWorkerNG::Fetcher.fetch(wfile)
49
-
50
- unless src.nil?
51
- eval(src)
52
-
53
- @base_dir = File.dirname(wfile) == '.' ? '' : File.dirname(wfile) + '/'
54
-
55
- break
56
- end
57
- end
58
-
59
- unless block.nil?
60
- instance_eval(&block)
61
- end
62
-
63
- if @name.nil? and @exec
64
- @name = guess_name_for_path(@exec.path)
65
- end
66
-
67
- @name = File.basename(@name) unless @name.nil?
68
- end
69
-
70
- def guess_name_for_path(path)
71
- File.basename(path).gsub(/\..*$/, '').capitalize.gsub(/_./) { |x| x[1].upcase }
72
- end
73
- end
74
- end
75
- end
76
- end