iron_worker_ng 0.7.4 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +6 -7
- data/VERSION +1 -1
- data/bin/iron_worker +15 -42
- data/lib/iron_worker_ng/api_client.rb +33 -24
- data/lib/iron_worker_ng/client.rb +49 -10
- data/lib/iron_worker_ng/code/base.rb +136 -39
- data/lib/iron_worker_ng/code/binary.rb +4 -10
- data/lib/iron_worker_ng/code/builder.rb +10 -4
- data/lib/iron_worker_ng/code/java.rb +4 -22
- data/lib/iron_worker_ng/code/mono.rb +13 -0
- data/lib/iron_worker_ng/code/node.rb +4 -8
- data/lib/iron_worker_ng/code/php.rb +13 -0
- data/lib/iron_worker_ng/code/python.rb +13 -0
- data/lib/iron_worker_ng/code/ruby.rb +4 -89
- data/lib/iron_worker_ng/code/runtime/binary.rb +19 -0
- data/lib/iron_worker_ng/code/runtime/java.rb +31 -0
- data/lib/iron_worker_ng/code/runtime/mono.rb +17 -0
- data/lib/iron_worker_ng/code/runtime/node.rb +17 -0
- data/lib/iron_worker_ng/code/runtime/php.rb +59 -0
- data/lib/iron_worker_ng/code/runtime/python.rb +17 -0
- data/lib/iron_worker_ng/code/runtime/ruby.rb +96 -0
- data/lib/iron_worker_ng/feature/base.rb +1 -2
- data/lib/iron_worker_ng/feature/binary/merge_exec.rb +3 -5
- data/lib/iron_worker_ng/feature/common/merge_dir.rb +0 -4
- data/lib/iron_worker_ng/feature/common/merge_file.rb +0 -4
- data/lib/iron_worker_ng/feature/java/merge_exec.rb +3 -5
- data/lib/iron_worker_ng/feature/java/merge_jar.rb +0 -4
- data/lib/iron_worker_ng/feature/mono/merge_exec.rb +51 -0
- data/lib/iron_worker_ng/feature/node/merge_exec.rb +3 -5
- data/lib/iron_worker_ng/feature/php/merge_exec.rb +51 -0
- data/lib/iron_worker_ng/feature/python/merge_exec.rb +51 -0
- data/lib/iron_worker_ng/feature/ruby/merge_exec.rb +3 -5
- data/lib/iron_worker_ng/feature/ruby/merge_gem.rb +4 -4
- data/lib/iron_worker_ng/feature/ruby/merge_gemfile.rb +0 -4
- data/lib/iron_worker_ng.rb +9 -1
- data/remote_test.rb +3 -1
- metadata +18 -7
- data/lib/iron_worker_ng/code/creator.rb +0 -63
- data/lib/iron_worker_ng/code/initializer.rb +0 -76
@@ -8,43 +8,102 @@ require_relative '../feature/common/merge_dir'
|
|
8
8
|
module IronWorkerNG
|
9
9
|
module Code
|
10
10
|
class Base
|
11
|
-
|
11
|
+
attr_accessor :features
|
12
|
+
attr_accessor :fixators
|
13
|
+
|
12
14
|
attr_accessor :base_dir
|
13
15
|
attr_accessor :dest_dir
|
14
16
|
|
15
|
-
|
16
|
-
|
17
|
-
def self.registered_types
|
18
|
-
@@registered_types
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.register_type(type)
|
22
|
-
@@registered_types << type
|
23
|
-
end
|
24
|
-
|
25
|
-
@@registered_features = []
|
26
|
-
|
27
|
-
def self.registered_features
|
28
|
-
@@registered_features
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.register_feature(feature)
|
32
|
-
return if feature[:for_klass].to_s == 'IronWorkerNG::Code::Builder'
|
33
|
-
|
34
|
-
@@registered_features << feature
|
35
|
-
end
|
17
|
+
attr_accessor :inside_builder
|
36
18
|
|
37
|
-
|
19
|
+
undef exec
|
38
20
|
|
39
21
|
include IronWorkerNG::Feature::Common::MergeFile::InstanceMethods
|
40
22
|
include IronWorkerNG::Feature::Common::MergeDir::InstanceMethods
|
41
23
|
|
42
24
|
def initialize(*args, &block)
|
43
25
|
@features = []
|
26
|
+
@fixators = []
|
27
|
+
|
44
28
|
@base_dir = ''
|
45
29
|
@dest_dir = ''
|
46
30
|
|
47
|
-
|
31
|
+
@runtime = nil
|
32
|
+
|
33
|
+
@name = nil
|
34
|
+
@exec = nil
|
35
|
+
|
36
|
+
@inside_builder = false
|
37
|
+
|
38
|
+
wfiles = []
|
39
|
+
|
40
|
+
if args.length == 1 && args[0].is_a?(String)
|
41
|
+
if args[0].end_with?('.worker') || args[0].end_with?('.workerfile')
|
42
|
+
@name = args[0].gsub(/\.worker$/, '').gsub(/\.workerfile$/, '')
|
43
|
+
else
|
44
|
+
@name = args[0]
|
45
|
+
end
|
46
|
+
elsif args.length == 1 && args[0].is_a?(Hash)
|
47
|
+
@name = args[0][:name] || args[0]['name']
|
48
|
+
|
49
|
+
wfile = args[0][:workerfile] || args[0]['workerfile']
|
50
|
+
wfiles << wfile unless wfile.nil?
|
51
|
+
|
52
|
+
exec = args[0][:exec] || args[0]['exec'] || args[0][:worker] || args[0]['worker']
|
53
|
+
unless exec.nil?
|
54
|
+
merge_exec(exec)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
if @name.nil? and (not @exec.nil?)
|
59
|
+
@name = guess_name_for_path(@exec.path)
|
60
|
+
end
|
61
|
+
|
62
|
+
unless @name.nil?
|
63
|
+
wfiles << @name + '.worker'
|
64
|
+
wfiles << @name + '.workerfile'
|
65
|
+
end
|
66
|
+
|
67
|
+
wfiles << 'Workerfile'
|
68
|
+
|
69
|
+
wfiles.each do |wfile|
|
70
|
+
src, clean = IronWorkerNG::Fetcher.fetch(wfile)
|
71
|
+
|
72
|
+
unless src.nil?
|
73
|
+
IronCore::Logger.info 'IronWorkerNG', "Using workerfile #{wfile}"
|
74
|
+
|
75
|
+
eval(src)
|
76
|
+
|
77
|
+
@base_dir = File.dirname(wfile) == '.' ? '' : File.dirname(wfile) + '/'
|
78
|
+
|
79
|
+
break
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
unless block.nil?
|
84
|
+
instance_eval(&block)
|
85
|
+
end
|
86
|
+
|
87
|
+
if @name.nil? and (not @exec.nil?)
|
88
|
+
@name = guess_name_for_path(@exec.path)
|
89
|
+
end
|
90
|
+
|
91
|
+
unless @name.nil?
|
92
|
+
@name = File.basename(@name)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def method_missing(name, *args, &block)
|
97
|
+
if @runtime.nil?
|
98
|
+
runtime(:ruby)
|
99
|
+
send(name, *args, &block)
|
100
|
+
else
|
101
|
+
super(name, *args, &block)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def guess_name_for_path(path)
|
106
|
+
File.basename(path).gsub(/File.extname(path)$/, '').capitalize.gsub(/_./) { |x| x[1].upcase }
|
48
107
|
end
|
49
108
|
|
50
109
|
def name(name = nil)
|
@@ -67,17 +126,44 @@ module IronWorkerNG
|
|
67
126
|
@remote_build_command = remote_build_command
|
68
127
|
end
|
69
128
|
|
70
|
-
|
129
|
+
alias :build :remote_build_command
|
130
|
+
alias :build= :remote_build_command=
|
131
|
+
|
132
|
+
def runtime(runtime = nil)
|
133
|
+
return @runtime unless runtime
|
134
|
+
|
135
|
+
unless @runtime.nil?
|
136
|
+
IronCore::Logger.error 'IronWorkerNG', "Runtime is already set to #{@runtime}", IronCore::Error
|
137
|
+
end
|
138
|
+
|
139
|
+
runtime_module = nil
|
140
|
+
runtime = runtime.to_s
|
141
|
+
|
142
|
+
begin
|
143
|
+
runtime_module = IronWorkerNG::Code::Runtime.const_get(runtime.capitalize)
|
144
|
+
rescue
|
145
|
+
begin
|
146
|
+
runtime_module = IronWorkerNG::Code::Runtime.const_get(runtime.upcase)
|
147
|
+
rescue
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
if runtime_module.nil?
|
152
|
+
IronCore::Logger.error 'IronWorkerNG', "Can't find runtime '#{runtime}'"
|
153
|
+
end
|
154
|
+
|
155
|
+
self.extend(runtime_module)
|
156
|
+
|
157
|
+
@runtime = runtime
|
71
158
|
end
|
72
159
|
|
73
160
|
def runtime=(runtime)
|
161
|
+
runtime(runtime)
|
74
162
|
end
|
75
163
|
|
76
164
|
def fixate
|
77
|
-
|
78
|
-
|
79
|
-
send(rf[:name] + '_fixate')
|
80
|
-
end
|
165
|
+
@fixators.each do |f|
|
166
|
+
send(f)
|
81
167
|
end
|
82
168
|
end
|
83
169
|
|
@@ -87,16 +173,23 @@ module IronWorkerNG
|
|
87
173
|
Digest::MD5.hexdigest(@features.map { |f| f.hash_string }.join)
|
88
174
|
end
|
89
175
|
|
176
|
+
def runtime_bundle(zip)
|
177
|
+
end
|
178
|
+
|
179
|
+
def runtime_run_code
|
180
|
+
''
|
181
|
+
end
|
182
|
+
|
90
183
|
def bundle(zip)
|
91
184
|
@features.each do |feature|
|
92
185
|
feature.bundle(zip)
|
93
186
|
end
|
94
187
|
|
95
|
-
unless
|
188
|
+
unless @inside_builder
|
96
189
|
zip.get_output_stream(@dest_dir + '__runner__.sh') do |runner|
|
97
190
|
runner.write <<RUNNER
|
98
191
|
#!/bin/sh
|
99
|
-
#
|
192
|
+
# #{IronWorkerNG.full_version}
|
100
193
|
|
101
194
|
root() {
|
102
195
|
while [ $# -gt 1 ]; do
|
@@ -111,17 +204,18 @@ root() {
|
|
111
204
|
|
112
205
|
cd "$(root "$@")"
|
113
206
|
|
114
|
-
#{
|
207
|
+
#{runtime_run_code}
|
115
208
|
RUNNER
|
116
209
|
end
|
117
210
|
end
|
211
|
+
|
212
|
+
runtime_bundle(zip)
|
118
213
|
end
|
119
214
|
|
120
215
|
def create_zip
|
121
|
-
unless
|
122
|
-
|
123
|
-
IronCore::Logger.error 'IronWorkerNG', 'No exec specified'
|
124
|
-
raise IronCore::IronError.new('No exec specified')
|
216
|
+
unless @inside_builder
|
217
|
+
if @exec.nil?
|
218
|
+
IronCore::Logger.error 'IronWorkerNG', 'No exec specified', IronCore::Error
|
125
219
|
end
|
126
220
|
|
127
221
|
if @name.nil?
|
@@ -149,18 +243,21 @@ RUNNER
|
|
149
243
|
builder.remote_build_command = @remote_build_command
|
150
244
|
|
151
245
|
builder.gem('iron_worker_ng')
|
152
|
-
builder.fixate
|
153
246
|
|
247
|
+
builder.fixate
|
154
248
|
builder.bundle(zip)
|
155
249
|
end
|
250
|
+
end
|
156
251
|
|
252
|
+
if @remote_build_command
|
253
|
+
@dest_dir = ''
|
157
254
|
end
|
158
255
|
|
159
256
|
zip_name
|
160
257
|
end
|
161
258
|
|
162
|
-
def
|
163
|
-
''
|
259
|
+
def to_s
|
260
|
+
"runtime='#{@runtime}', name='#{@name}', exec='#{@inside_builder ? '' : @exec.path}'"
|
164
261
|
end
|
165
262
|
end
|
166
263
|
end
|
@@ -1,19 +1,13 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'runtime/binary'
|
2
2
|
|
3
3
|
module IronWorkerNG
|
4
4
|
module Code
|
5
5
|
class Binary < IronWorkerNG::Code::Base
|
6
|
-
|
6
|
+
def initialize(*args, &block)
|
7
|
+
runtime(:binary)
|
7
8
|
|
8
|
-
|
9
|
-
<<RUN_CODE
|
10
|
-
chmod +x #{File.basename(@exec.path)}
|
11
|
-
|
12
|
-
LD_LIBRARY_PATH=. ./#{File.basename(@exec.path)} "$@"
|
13
|
-
RUN_CODE
|
9
|
+
super(*args, &block)
|
14
10
|
end
|
15
11
|
end
|
16
12
|
end
|
17
13
|
end
|
18
|
-
|
19
|
-
IronWorkerNG::Code::Base.register_type(:name => 'binary', :klass => IronWorkerNG::Code::Binary)
|
@@ -2,11 +2,15 @@ require_relative '../feature/ruby/merge_gem'
|
|
2
2
|
|
3
3
|
module IronWorkerNG
|
4
4
|
module Code
|
5
|
-
class Builder < IronWorkerNG::Code::
|
5
|
+
class Builder < IronWorkerNG::Code::Base
|
6
6
|
def initialize(*args, &block)
|
7
7
|
@features = []
|
8
|
+
@fixators = []
|
9
|
+
|
8
10
|
@base_dir = ''
|
9
11
|
@dest_dir = ''
|
12
|
+
|
13
|
+
runtime(:ruby)
|
10
14
|
end
|
11
15
|
|
12
16
|
def bundle(zip)
|
@@ -16,14 +20,14 @@ module IronWorkerNG
|
|
16
20
|
|
17
21
|
zip.get_output_stream(@dest_dir + '__builder__.sh') do |builder|
|
18
22
|
builder.write <<BUILDER_SH
|
19
|
-
#
|
23
|
+
# #{IronWorkerNG.full_version}
|
20
24
|
#{remote_build_command}
|
21
25
|
BUILDER_SH
|
22
26
|
end
|
23
27
|
|
24
28
|
zip.get_output_stream(@dest_dir + '__builder__.rb') do |builder|
|
25
29
|
builder.write <<BUILDER_RUBY
|
26
|
-
#
|
30
|
+
# #{IronWorkerNG.full_version}
|
27
31
|
|
28
32
|
require 'iron_worker_ng'
|
29
33
|
require 'json'
|
@@ -33,10 +37,12 @@ exit 1 unless system('cd __build__ && sh ../__builder__.sh && cd ..')
|
|
33
37
|
Dir.chdir('__build__')
|
34
38
|
|
35
39
|
code = IronWorkerNG::Code::Base.new
|
40
|
+
code.inside_builder = true
|
41
|
+
|
36
42
|
code.name params[:code_name]
|
37
43
|
code.dir '.'
|
38
44
|
|
39
|
-
client = IronWorkerNG::Client.new(
|
45
|
+
client = IronWorkerNG::Client.new(JSON.parse(params[:client_options]))
|
40
46
|
|
41
47
|
res = client.codes.create(code, JSON.parse(params[:codes_create_options]))
|
42
48
|
|
@@ -1,31 +1,13 @@
|
|
1
|
-
require_relative '
|
2
|
-
require_relative '../feature/java/merge_exec'
|
1
|
+
require_relative 'runtime/java'
|
3
2
|
|
4
3
|
module IronWorkerNG
|
5
4
|
module Code
|
6
5
|
class Java < IronWorkerNG::Code::Base
|
7
|
-
|
8
|
-
|
6
|
+
def initialize(*args, &block)
|
7
|
+
runtime(:java)
|
9
8
|
|
10
|
-
|
11
|
-
classpath_array = []
|
12
|
-
|
13
|
-
@features.each do |f|
|
14
|
-
if f.respond_to?(:code_for_classpath)
|
15
|
-
classpath_array << f.send(:code_for_classpath)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
classpath = classpath_array.join(':')
|
20
|
-
|
21
|
-
IronCore::Logger.info 'IronWorkerNG', "Collected '#{classpath}' classpath"
|
22
|
-
|
23
|
-
<<RUN_CODE
|
24
|
-
java -cp #{classpath} #{@exec.klass.nil? ? "-jar #{File.basename(@exec.path)}" : @exec.klass} "$@"
|
25
|
-
RUN_CODE
|
9
|
+
super(*args, &block)
|
26
10
|
end
|
27
11
|
end
|
28
12
|
end
|
29
13
|
end
|
30
|
-
|
31
|
-
IronWorkerNG::Code::Base.register_type(:name => 'java', :klass => IronWorkerNG::Code::Java)
|
@@ -1,17 +1,13 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'runtime/node'
|
2
2
|
|
3
3
|
module IronWorkerNG
|
4
4
|
module Code
|
5
5
|
class Node < IronWorkerNG::Code::Base
|
6
|
-
|
6
|
+
def initialize(*args, &block)
|
7
|
+
runtime(:node)
|
7
8
|
|
8
|
-
|
9
|
-
<<RUN_CODE
|
10
|
-
node #{File.basename(@exec.path)} "$@"
|
11
|
-
RUN_CODE
|
9
|
+
super(*args, &block)
|
12
10
|
end
|
13
11
|
end
|
14
12
|
end
|
15
13
|
end
|
16
|
-
|
17
|
-
IronWorkerNG::Code::Base.register_type(:name => 'node', :klass => IronWorkerNG::Code::Node)
|
@@ -1,98 +1,13 @@
|
|
1
|
-
require_relative '
|
2
|
-
require_relative '../feature/ruby/merge_gemfile'
|
3
|
-
require_relative '../feature/ruby/merge_exec'
|
1
|
+
require_relative 'runtime/ruby'
|
4
2
|
|
5
3
|
module IronWorkerNG
|
6
4
|
module Code
|
7
5
|
class Ruby < IronWorkerNG::Code::Base
|
8
|
-
|
9
|
-
|
10
|
-
include IronWorkerNG::Feature::Ruby::MergeExec::InstanceMethods
|
6
|
+
def initialize(*args, &block)
|
7
|
+
runtime(:ruby)
|
11
8
|
|
12
|
-
|
13
|
-
super(zip)
|
14
|
-
|
15
|
-
zip.get_output_stream(@dest_dir + '__runner__.rb') do |runner|
|
16
|
-
runner.write <<RUBY_RUNNER
|
17
|
-
# iron_worker_ng-#{IronWorkerNG.full_version}
|
18
|
-
|
19
|
-
module IronWorkerNG
|
20
|
-
#{File.read(File.dirname(__FILE__) + '/../../3rdparty/hashie/merge_initializer.rb')}
|
21
|
-
#{File.read(File.dirname(__FILE__) + '/../../3rdparty/hashie/indifferent_access.rb')}
|
22
|
-
end
|
23
|
-
|
24
|
-
class IronWorkerNGHash < Hash
|
25
|
-
include IronWorkerNG::Hashie::Extensions::MergeInitializer
|
26
|
-
include IronWorkerNG::Hashie::Extensions::IndifferentAccess
|
27
|
-
end
|
28
|
-
|
29
|
-
root = nil
|
30
|
-
payload_file = nil
|
31
|
-
task_id = nil
|
32
|
-
|
33
|
-
0.upto($*.length - 2) do |i|
|
34
|
-
root = $*[i + 1] if $*[i] == '-d'
|
35
|
-
payload_file = $*[i + 1] if $*[i] == '-payload'
|
36
|
-
task_id = $*[i + 1] if $*[i] == '-id'
|
37
|
-
end
|
38
|
-
|
39
|
-
ENV['GEM_PATH'] = ([root + '__gems__'] + (ENV['GEM_PATH'] || '').split(':')).join(':')
|
40
|
-
|
41
|
-
$:.unshift("\#{root}")
|
42
|
-
|
43
|
-
require 'json'
|
44
|
-
|
45
|
-
@iron_task_id = task_id
|
46
|
-
|
47
|
-
@payload = File.read(payload_file)
|
48
|
-
|
49
|
-
params = {}
|
50
|
-
begin
|
51
|
-
params = JSON.parse(@payload)
|
52
|
-
rescue
|
53
|
-
end
|
54
|
-
|
55
|
-
@params = IronWorkerNGHash.new(params)
|
56
|
-
|
57
|
-
def payload
|
58
|
-
@payload
|
59
|
-
end
|
60
|
-
|
61
|
-
def params
|
62
|
-
@params
|
63
|
-
end
|
64
|
-
|
65
|
-
def iron_task_id
|
66
|
-
@iron_task_id
|
67
|
-
end
|
68
|
-
|
69
|
-
require '#{File.basename(@exec.path)}'
|
70
|
-
|
71
|
-
unless #{@exec.klass == nil}
|
72
|
-
exec_class = Kernel.const_get('#{@exec.klass}')
|
73
|
-
exec_inst = exec_class.new
|
74
|
-
|
75
|
-
params.keys.each do |param|
|
76
|
-
if param.class == String
|
77
|
-
if exec_inst.respond_to?(param + '=')
|
78
|
-
exec_inst.send(param + '=', params[param])
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
exec_inst.run
|
84
|
-
end
|
85
|
-
RUBY_RUNNER
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
def run_code
|
90
|
-
<<RUN_CODE
|
91
|
-
ruby __runner__.rb "$@"
|
92
|
-
RUN_CODE
|
9
|
+
super(*args, &block)
|
93
10
|
end
|
94
11
|
end
|
95
12
|
end
|
96
13
|
end
|
97
|
-
|
98
|
-
IronWorkerNG::Code::Base.register_type(:name => 'ruby', :klass => IronWorkerNG::Code::Ruby)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative '../../feature/binary/merge_exec'
|
2
|
+
|
3
|
+
module IronWorkerNG
|
4
|
+
module Code
|
5
|
+
module Runtime
|
6
|
+
module Binary
|
7
|
+
include IronWorkerNG::Feature::Binary::MergeExec::InstanceMethods
|
8
|
+
|
9
|
+
def runtime_run_code
|
10
|
+
<<RUN_CODE
|
11
|
+
chmod +x #{File.basename(@exec.path)}
|
12
|
+
|
13
|
+
LD_LIBRARY_PATH=. ./#{File.basename(@exec.path)} "$@"
|
14
|
+
RUN_CODE
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative '../../feature/java/merge_jar'
|
2
|
+
require_relative '../../feature/java/merge_exec'
|
3
|
+
|
4
|
+
module IronWorkerNG
|
5
|
+
module Code
|
6
|
+
module Runtime
|
7
|
+
module Java
|
8
|
+
include IronWorkerNG::Feature::Java::MergeJar::InstanceMethods
|
9
|
+
include IronWorkerNG::Feature::Java::MergeExec::InstanceMethods
|
10
|
+
|
11
|
+
def runtime_run_code
|
12
|
+
classpath_array = []
|
13
|
+
|
14
|
+
@features.each do |f|
|
15
|
+
if f.respond_to?(:code_for_classpath)
|
16
|
+
classpath_array << f.send(:code_for_classpath)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
classpath = classpath_array.join(':')
|
21
|
+
|
22
|
+
IronCore::Logger.info 'IronWorkerNG', "Collected '#{classpath}' classpath"
|
23
|
+
|
24
|
+
<<RUN_CODE
|
25
|
+
java -cp #{classpath} #{@exec.klass.nil? ? "-jar #{File.basename(@exec.path)}" : @exec.klass} "$@"
|
26
|
+
RUN_CODE
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative '../../feature/mono/merge_exec'
|
2
|
+
|
3
|
+
module IronWorkerNG
|
4
|
+
module Code
|
5
|
+
module Runtime
|
6
|
+
module Mono
|
7
|
+
include IronWorkerNG::Feature::Mono::MergeExec::InstanceMethods
|
8
|
+
|
9
|
+
def runtime_run_code
|
10
|
+
<<RUN_CODE
|
11
|
+
mono #{File.basename(@exec.path)} "$@"
|
12
|
+
RUN_CODE
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative '../../feature/node/merge_exec'
|
2
|
+
|
3
|
+
module IronWorkerNG
|
4
|
+
module Code
|
5
|
+
module Runtime
|
6
|
+
module Node
|
7
|
+
include IronWorkerNG::Feature::Node::MergeExec::InstanceMethods
|
8
|
+
|
9
|
+
def runtime_run_code
|
10
|
+
<<RUN_CODE
|
11
|
+
node #{File.basename(@exec.path)} "$@"
|
12
|
+
RUN_CODE
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require_relative '../../feature/php/merge_exec'
|
2
|
+
|
3
|
+
module IronWorkerNG
|
4
|
+
module Code
|
5
|
+
module Runtime
|
6
|
+
module PHP
|
7
|
+
include IronWorkerNG::Feature::PHP::MergeExec::InstanceMethods
|
8
|
+
|
9
|
+
def runtime_bundle(zip)
|
10
|
+
zip.get_output_stream(@dest_dir + '__runner__.php') do |runner|
|
11
|
+
runner.write <<PHP_RUNNER
|
12
|
+
<?php
|
13
|
+
/* #{IronWorkerNG.full_version} */
|
14
|
+
|
15
|
+
function getArgs() {
|
16
|
+
global $argv;
|
17
|
+
|
18
|
+
$args = array('task_id' => null, 'dir' => null, 'payload' => array());
|
19
|
+
|
20
|
+
foreach ($argv as $k => $v) {
|
21
|
+
if (empty($argv[$k + 1])) continue;
|
22
|
+
|
23
|
+
if ($v == '-id') $args['task_id'] = $argv[$k + 1];
|
24
|
+
if ($v == '-d') $args['dir'] = $argv[$k + 1];
|
25
|
+
|
26
|
+
if ($v == '-payload' && file_exists($argv[$k + 1])) {
|
27
|
+
$args['payload'] = file_get_contents($argv[$k + 1]);
|
28
|
+
|
29
|
+
$parsed_payload = json_decode($args['payload']);
|
30
|
+
|
31
|
+
if ($parsed_payload != NULL) {
|
32
|
+
$args['payload'] = $parsed_payload;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
return $args;
|
38
|
+
}
|
39
|
+
|
40
|
+
function getPayload() {
|
41
|
+
$args = getArgs();
|
42
|
+
|
43
|
+
return $args['payload'];
|
44
|
+
}
|
45
|
+
|
46
|
+
require '#{File.basename(@exec.path)}';
|
47
|
+
PHP_RUNNER
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def runtime_run_code
|
52
|
+
<<RUN_CODE
|
53
|
+
TERM=dumb php __runner__.php "$@"
|
54
|
+
RUN_CODE
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative '../../feature/python/merge_exec'
|
2
|
+
|
3
|
+
module IronWorkerNG
|
4
|
+
module Code
|
5
|
+
module Runtime
|
6
|
+
module Python
|
7
|
+
include IronWorkerNG::Feature::Python::MergeExec::InstanceMethods
|
8
|
+
|
9
|
+
def runtime_run_code
|
10
|
+
<<RUN_CODE
|
11
|
+
python #{File.basename(@exec.path)} "$@"
|
12
|
+
RUN_CODE
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|