iron_worker_ng 0.10.2 → 0.10.3

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 (37) hide show
  1. data/bin/iron_worker +130 -323
  2. data/lib/iron_worker_ng/cli.rb +275 -0
  3. data/lib/iron_worker_ng/client.rb +32 -20
  4. data/lib/iron_worker_ng/code/base.rb +45 -37
  5. data/lib/iron_worker_ng/code/builder.rb +4 -3
  6. data/lib/iron_worker_ng/code/container/base.rb +31 -0
  7. data/lib/iron_worker_ng/code/container/dir.rb +31 -0
  8. data/lib/iron_worker_ng/code/container/zip.rb +30 -0
  9. data/lib/iron_worker_ng/code/runtime/binary.rb +1 -3
  10. data/lib/iron_worker_ng/code/runtime/go.rb +1 -3
  11. data/lib/iron_worker_ng/code/runtime/java.rb +2 -3
  12. data/lib/iron_worker_ng/code/runtime/mono.rb +1 -3
  13. data/lib/iron_worker_ng/code/runtime/node.rb +1 -3
  14. data/lib/iron_worker_ng/code/runtime/perl.rb +1 -3
  15. data/lib/iron_worker_ng/code/runtime/php.rb +1 -3
  16. data/lib/iron_worker_ng/code/runtime/python.rb +1 -3
  17. data/lib/iron_worker_ng/code/runtime/ruby.rb +11 -9
  18. data/lib/iron_worker_ng/feature/base.rb +14 -20
  19. data/lib/iron_worker_ng/feature/common/merge_dir.rb +14 -5
  20. data/lib/iron_worker_ng/feature/common/merge_exec.rb +79 -0
  21. data/lib/iron_worker_ng/feature/common/merge_file.rb +13 -4
  22. data/lib/iron_worker_ng/feature/java/merge_jar.rb +12 -0
  23. data/lib/iron_worker_ng/feature/ruby/merge_gem.rb +11 -55
  24. data/lib/iron_worker_ng/feature/ruby/merge_gem_dependency.rb +76 -0
  25. data/lib/iron_worker_ng/fetcher.rb +39 -18
  26. data/lib/iron_worker_ng/version.rb +1 -1
  27. metadata +45 -17
  28. data/lib/iron_worker_ng/code/dir_container.rb +0 -33
  29. data/lib/iron_worker_ng/feature/binary/merge_exec.rb +0 -51
  30. data/lib/iron_worker_ng/feature/go/merge_exec.rb +0 -51
  31. data/lib/iron_worker_ng/feature/java/merge_exec.rb +0 -57
  32. data/lib/iron_worker_ng/feature/mono/merge_exec.rb +0 -51
  33. data/lib/iron_worker_ng/feature/node/merge_exec.rb +0 -51
  34. data/lib/iron_worker_ng/feature/perl/merge_exec.rb +0 -51
  35. data/lib/iron_worker_ng/feature/php/merge_exec.rb +0 -51
  36. data/lib/iron_worker_ng/feature/python/merge_exec.rb +0 -51
  37. data/lib/iron_worker_ng/feature/ruby/merge_exec.rb +0 -53
@@ -1,5 +1,3 @@
1
- require 'pathname'
2
-
3
1
  module IronWorkerNG
4
2
  module Feature
5
3
  module Common
@@ -12,8 +10,7 @@ module IronWorkerNG
12
10
  super(code)
13
11
 
14
12
  @path = path
15
- @dest = dest
16
- @dest = Pathname.new(dest).cleanpath.to_s + '/' unless @dest.empty?
13
+ @dest = dest + (dest.empty? || dest.end_with?('/') ? '' : '/')
17
14
  end
18
15
 
19
16
  def hash_string
@@ -25,6 +22,18 @@ module IronWorkerNG
25
22
 
26
23
  container_add(container, @dest + File.basename(@path), rebase(@path))
27
24
  end
25
+
26
+ def command(remote = false)
27
+ if remote
28
+ if IronWorkerNG::Fetcher.remote?(rebase(@path))
29
+ "file '#{rebase(@path)}', '#{@dest}'"
30
+ else
31
+ "file '#{@dest}#{File.basename(@path)}', '#{@dest}'"
32
+ end
33
+ else
34
+ "file '#{@path}', '#{@dest}'"
35
+ end
36
+ end
28
37
  end
29
38
 
30
39
  module InstanceMethods
@@ -21,6 +21,18 @@ module IronWorkerNG
21
21
  container_add(container, File.basename(@path), rebase(@path))
22
22
  end
23
23
 
24
+ def command(remote = false)
25
+ if remote
26
+ if IronWorkerNG::Fetcher.remote?(rebase(@path))
27
+ "jar '#{rebase(@path)}'"
28
+ else
29
+ "jar '#{File.basename(@path)}'"
30
+ end
31
+ else
32
+ "jar '#{@path}'"
33
+ end
34
+ end
35
+
24
36
  def code_for_classpath
25
37
  File.basename(@path)
26
38
  end
@@ -1,5 +1,3 @@
1
- require 'bundler'
2
-
3
1
  module IronWorkerNG
4
2
  module Feature
5
3
  module Ruby
@@ -41,64 +39,22 @@ module IronWorkerNG
41
39
  if @spec.extensions.length == 0 || IronWorkerNG::Feature::Ruby::MergeGem.merge_binary?
42
40
  IronCore::Logger.debug 'IronWorkerNG', "Bundling ruby gem with name='#{@spec.name}' and version='#{@spec.version}'"
43
41
 
44
- container_add(container, '__gems__/gems/' + @spec.full_name, gem_path)
45
- container_add(container, "__gems__/specifications/#{@spec.full_name}.gemspec", gem_path + '/../../specifications/' + @spec.full_name + '.gemspec')
42
+ if File.exists? @spec.full_gem_path
43
+ container_add(container, '__gems__/gems/' + @spec.full_name, gem_path)
44
+ else # local gem
45
+ from_dir = File.dirname @spec.loaded_from
46
+ @spec.files.each do |fname|
47
+ to = '__gems__/gems/' + @spec.full_name + '/' + fname
48
+ from = from_dir + '/' + fname
49
+ container_add(container, to, from) if File.file? from
50
+ end
51
+ end
52
+ container_add(container, "__gems__/specifications/#{@spec.full_name}.gemspec", @spec.loaded_from)
46
53
  else
47
54
  IronCore::Logger.warn 'IronWorkerNG', "Skipping ruby gem with name='#{@spec.name}' and version='#{@spec.version}' as it contains native extensions"
48
55
  end
49
56
  end
50
57
  end
51
-
52
- module InstanceMethods
53
- attr_reader :merge_gem_reqs
54
-
55
- def merge_gem(name, version = '>= 0')
56
- IronCore::Logger.info 'IronWorkerNG', "Adding ruby gem dependency with name='#{name}' and version='#{version}'"
57
-
58
- @merge_gem_reqs ||= []
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
64
- end
65
-
66
- alias :gem :merge_gem
67
-
68
- def merge_gem_fixate
69
- IronCore::Logger.info 'IronWorkerNG', 'Fixating gems dependencies'
70
-
71
- @merge_gem_reqs ||= []
72
-
73
- @features.reject! do |f|
74
- f.class == IronWorkerNG::Feature::Ruby::MergeGem::Feature
75
- end
76
-
77
- if @merge_gem_reqs.length > 0
78
- reqs = @merge_gem_reqs.map { |req| Bundler::DepProxy.new(req, Gem::Platform::RUBY) }
79
-
80
- source = nil
81
- begin
82
- source = Bundler::Source::Rubygems.new
83
- rescue Bundler::GemfileNotFound
84
- ENV['BUNDLE_GEMFILE'] = 'Gemfile'
85
- source = Bundler::Source::Rubygems.new
86
- end
87
-
88
- index = Bundler::Index.build { |index| index.use source.specs }
89
-
90
- spec_set = Bundler::Resolver.resolve(reqs, index)
91
-
92
- spec_set.to_a.each do |spec|
93
- spec.__materialize__
94
-
95
- IronCore::Logger.info 'IronWorkerNG', "Merging ruby gem with name='#{spec.name}' and version='#{spec.version}'"
96
-
97
- @features << IronWorkerNG::Feature::Ruby::MergeGem::Feature.new(self, spec)
98
- end
99
- end
100
- end
101
- end
102
58
  end
103
59
  end
104
60
  end
@@ -0,0 +1,76 @@
1
+ require 'bundler'
2
+
3
+ module IronWorkerNG
4
+ module Feature
5
+ module Ruby
6
+ module MergeGemDependency
7
+ class Feature < IronWorkerNG::Feature::Base
8
+ attr_reader :name
9
+ attr_reader :version
10
+
11
+ def initialize(code, name, version)
12
+ super(code)
13
+
14
+ @name = name
15
+ @version = version
16
+ end
17
+
18
+ def hash_string
19
+ Digest::MD5.hexdigest(@name + @version)
20
+ end
21
+
22
+ def command(remote = false)
23
+ "gem '#{@name}', '#{@version}'"
24
+ end
25
+ end
26
+
27
+ module InstanceMethods
28
+ def merge_gem(name, version = '>= 0')
29
+ IronCore::Logger.info 'IronWorkerNG', "Adding ruby gem dependency with name='#{name}' and version='#{version}'"
30
+
31
+ @features << IronWorkerNG::Feature::Ruby::MergeGemDependency::Feature.new(self, name, version)
32
+
33
+ unless @fixators.include?(:merge_gem_dependency_fixate)
34
+ @fixators << :merge_gem_dependency_fixate
35
+ end
36
+ end
37
+
38
+ alias :gem :merge_gem
39
+
40
+ def merge_gem_dependency_fixate
41
+ IronCore::Logger.info 'IronWorkerNG', 'Fixating gems dependencies'
42
+
43
+ @features.reject! { |f| f.class == IronWorkerNG::Feature::Ruby::MergeGem::Feature }
44
+
45
+ deps = @features.reject { |f| f.class != IronWorkerNG::Feature::Ruby::MergeGemDependency::Feature }
46
+
47
+ if deps.length > 0
48
+ deps = deps.map { |dep| Bundler::DepProxy.new(Bundler::Dependency.new(dep.name, dep.version.split(', ')), Gem::Platform::RUBY) }
49
+
50
+ source = nil
51
+
52
+ begin
53
+ source = Bundler::Source::Rubygems.new
54
+ rescue Bundler::GemfileNotFound
55
+ ENV['BUNDLE_GEMFILE'] = 'Gemfile'
56
+ source = Bundler::Source::Rubygems.new
57
+ end
58
+
59
+ index = Bundler::Index.build { |index| index.use source.specs }
60
+
61
+ spec_set = Bundler::Resolver.resolve(deps, index)
62
+
63
+ spec_set.to_a.each do |spec|
64
+ spec.__materialize__
65
+
66
+ IronCore::Logger.info 'IronWorkerNG', "Merging ruby gem with name='#{spec.name}' and version='#{spec.version}'"
67
+
68
+ @features << IronWorkerNG::Feature::Ruby::MergeGem::Feature.new(self, spec)
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -1,11 +1,16 @@
1
1
  require 'net/http'
2
2
  require 'net/https'
3
3
  require 'tmpdir'
4
+ require 'fileutils'
4
5
 
5
6
  module IronWorkerNG
6
7
  class Fetcher
7
- def self.fetch(url, to_file = false)
8
- if url.start_with?('http://') || url.start_with?('https://')
8
+ def self.remote?(url)
9
+ url.start_with?('http://') || url.start_with?('https://')
10
+ end
11
+
12
+ def self.fetch(url, &block)
13
+ if IronWorkerNG::Fetcher.remote?(url)
9
14
  uri = URI.parse(url)
10
15
 
11
16
  http = Net::HTTP.new(uri.host, uri.port)
@@ -18,32 +23,48 @@ module IronWorkerNG
18
23
  response = http.request(Net::HTTP::Get.new(uri.request_uri))
19
24
 
20
25
  if response.kind_of?(Net::HTTPRedirection)
21
- return IronWorkerNG::Fetcher.fetch(response['location'], to_file)
26
+ IronWorkerNG::Fetcher.fetch(response['location'], &block)
27
+
28
+ return
22
29
  end
23
30
 
24
- if to_file
25
- tmp_dir_name = Dir.tmpdir + '/' + Dir::Tmpname.make_tmpname("iron-worker-ng-", "http")
31
+ block.call(response.body) unless block.nil?
32
+ else
33
+ unless File.exists?(url)
34
+ block.call(nil) unless block.nil?
26
35
 
27
- Dir.mkdir(tmp_dir_name)
36
+ return
37
+ end
28
38
 
29
- File.open(tmp_dir_name + '/' + File.basename(url), 'wb') do |f|
30
- f.write(response.body)
31
- end
39
+ block.call(File.read(url)) unless block.nil?
40
+ end
41
+ end
42
+
43
+ def self.fetch_to_file(url, &block)
44
+ if IronWorkerNG::Fetcher.remote?(url)
45
+ IronWorkerNG::Fetcher.fetch(url) do |data|
46
+ unless data.nil?
47
+ tmp_dir_name = ::Dir.tmpdir + '/' + ::Dir::Tmpname.make_tmpname("iron-worker-ng-", "http")
48
+
49
+ ::Dir.mkdir(tmp_dir_name)
50
+
51
+ File.open(tmp_dir_name + '/' + File.basename(url), 'wb') do |f|
52
+ f.write(data)
53
+ end
32
54
 
33
- [tmp_dir_name + '/' + File.basename(url), tmp_dir_name]
34
- else
35
- [response.body, nil]
55
+ block.call(tmp_dir_name + '/' + File.basename(url)) unless block.nil?
56
+
57
+ FileUtils.rm_rf(tmp_dir_name)
58
+ end
36
59
  end
37
60
  else
38
61
  unless File.exists?(url)
39
- return [nil, nil]
40
- end
62
+ block.call(nil) unless block.nil?
41
63
 
42
- if to_file
43
- [url, nil]
44
- else
45
- [File.read(url), nil]
64
+ return
46
65
  end
66
+
67
+ block.call(url) unless block.nil?
47
68
  end
48
69
  end
49
70
  end
@@ -1,5 +1,5 @@
1
1
  module IronWorkerNG
2
- VERSION = "0.10.2"
2
+ VERSION = "0.10.3"
3
3
 
4
4
  def self.version
5
5
  VERSION
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.10.2
4
+ version: 0.10.3
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-08-26 00:00:00.000000000 Z
13
+ date: 2012-09-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: iron_core
@@ -45,21 +45,53 @@ dependencies:
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
47
  - !ruby/object:Gem::Dependency
48
- name: bundler
48
+ name: test-unit
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
- version: 1.0.0
55
- type: :runtime
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: minitest
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :development
56
72
  prerelease: false
57
73
  version_requirements: !ruby/object:Gem::Requirement
58
74
  none: false
59
75
  requirements:
60
76
  - - ! '>='
61
77
  - !ruby/object:Gem::Version
62
- version: 1.0.0
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: minitest-reporters
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: 0.5.0
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: 0.5.0
63
95
  - !ruby/object:Gem::Dependency
64
96
  name: rake
65
97
  requirement: !ruby/object:Gem::Requirement
@@ -84,7 +116,6 @@ executables:
84
116
  extensions: []
85
117
  extra_rdoc_files: []
86
118
  files:
87
- - bin/iron_worker
88
119
  - lib/3rdparty/hashie/indifferent_access.rb
89
120
  - lib/3rdparty/hashie/merge_initializer.rb
90
121
  - lib/iron_worker_ng/fetcher.rb
@@ -96,7 +127,6 @@ files:
96
127
  - lib/iron_worker_ng/code/node.rb
97
128
  - lib/iron_worker_ng/code/base.rb
98
129
  - lib/iron_worker_ng/code/java.rb
99
- - lib/iron_worker_ng/code/dir_container.rb
100
130
  - lib/iron_worker_ng/code/runtime/python.rb
101
131
  - lib/iron_worker_ng/code/runtime/ruby.rb
102
132
  - lib/iron_worker_ng/code/runtime/mono.rb
@@ -109,27 +139,25 @@ files:
109
139
  - lib/iron_worker_ng/code/perl.rb
110
140
  - lib/iron_worker_ng/code/builder.rb
111
141
  - lib/iron_worker_ng/code/binary.rb
142
+ - lib/iron_worker_ng/code/container/zip.rb
143
+ - lib/iron_worker_ng/code/container/dir.rb
144
+ - lib/iron_worker_ng/code/container/base.rb
112
145
  - lib/iron_worker_ng/code/php.rb
113
146
  - lib/iron_worker_ng/code/go.rb
114
- - lib/iron_worker_ng/feature/mono/merge_exec.rb
115
- - lib/iron_worker_ng/feature/php/merge_exec.rb
116
- - lib/iron_worker_ng/feature/node/merge_exec.rb
117
147
  - lib/iron_worker_ng/feature/base.rb
118
- - lib/iron_worker_ng/feature/go/merge_exec.rb
119
- - lib/iron_worker_ng/feature/python/merge_exec.rb
120
148
  - lib/iron_worker_ng/feature/java/merge_jar.rb
121
- - lib/iron_worker_ng/feature/java/merge_exec.rb
122
- - lib/iron_worker_ng/feature/perl/merge_exec.rb
149
+ - lib/iron_worker_ng/feature/ruby/merge_gem_dependency.rb
123
150
  - lib/iron_worker_ng/feature/ruby/merge_gem.rb
124
151
  - lib/iron_worker_ng/feature/ruby/merge_gemfile.rb
125
- - lib/iron_worker_ng/feature/ruby/merge_exec.rb
126
152
  - lib/iron_worker_ng/feature/common/merge_file.rb
127
153
  - lib/iron_worker_ng/feature/common/merge_dir.rb
128
- - lib/iron_worker_ng/feature/binary/merge_exec.rb
154
+ - lib/iron_worker_ng/feature/common/merge_exec.rb
155
+ - lib/iron_worker_ng/cli.rb
129
156
  - lib/iron_worker_ng/api_client.rb
130
157
  - lib/iron_worker_ng.rb
131
158
  - README.md
132
159
  - LICENSE
160
+ - bin/iron_worker
133
161
  homepage: https://github.com/iron-io/iron_worker_ruby_ng
134
162
  licenses: []
135
163
  post_install_message:
@@ -1,33 +0,0 @@
1
- require 'fileutils'
2
-
3
- module IronWorkerNG
4
- module Code
5
- class DirContainer
6
- def initialize(dir)
7
- @dir = dir
8
- end
9
-
10
- def full_dest(dest)
11
- @dir + '/' + dest
12
- end
13
-
14
- def add(dest, src)
15
- FileUtils.mkdir_p(File.dirname(full_dest(dest)))
16
-
17
- if File.directory?(src)
18
- FileUtils.mkdir(full_dest(dest))
19
- else
20
- FileUtils.cp(src, full_dest(dest))
21
- end
22
- end
23
-
24
- def get_output_stream(dest, &block)
25
- FileUtils.mkdir_p(File.dirname(full_dest(dest)))
26
-
27
- file = File.open(full_dest(dest), 'wb')
28
- yield file
29
- file.close
30
- end
31
- end
32
- end
33
- end