jar_wrapper 0.1.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/CHANGES ADDED
@@ -0,0 +1,6 @@
1
+
2
+ = Jar Wrapper Gem Changelog
3
+
4
+ == Version 0.0.1
5
+
6
+ * Initial release.
data/README ADDED
@@ -0,0 +1,31 @@
1
+ = Jar Wrapper -- Jar wrapper for executable java jarjava jar
2
+
3
+ = Installing Jar Wrapper
4
+
5
+ == Installing Jar Wrapper
6
+ $ gem install jar_wrapper
7
+
8
+ == Usage
9
+
10
+ require 'jar_wrapper'
11
+
12
+ wrapper = JarWrapper.new
13
+ wrapper.java_opts = ["-Xmx1024m", "-Xss1024k" ]
14
+
15
+ # 1. install jar file from source URL into target file:
16
+
17
+ wrapper.install source, target
18
+
19
+ # 2. execute jar file (java -jar jar_file):
20
+
21
+ wrapper.jar_file = jar_file
22
+ wrapper.run ARGV
23
+
24
+ # 3. execute main class (java -cp ... main_class):
25
+
26
+ wrapper.classpath = some_class_path
27
+ wrapper.main_class = main_class
28
+ wrapper.run ARGV
29
+
30
+
31
+
data/Rakefile ADDED
@@ -0,0 +1,54 @@
1
+ # Rakefile for winstone
2
+
3
+ task :default => :gemspec
4
+
5
+ begin
6
+ require 'bundler'
7
+
8
+ begin
9
+ require 'jeweler'
10
+
11
+ Jeweler::Tasks.new do |gemspec|
12
+ gemspec.name = "jar_wrapper"
13
+ gemspec.summary = "Jar wrapper for executable java jar (Summary)."
14
+ gemspec.description = "Jar wrapper for executable java jar."
15
+ gemspec.email = "alexander.shvets@gmail.com"
16
+ gemspec.homepage = "http://github.com/shvets/jar_wrapper"
17
+ gemspec.authors = ["Alexander Shvets"]
18
+ gemspec.files = FileList["CHANGES", "jar_wrapper.gemspec", "Rakefile", "README", "VERSION",
19
+ "lib/**/*", "bin/**/*"]
20
+ gemspec.requirements = ["none"]
21
+ gemspec.bindir = "bin"
22
+
23
+ gemspec.add_bundler_dependencies
24
+ end
25
+ rescue LoadError
26
+ puts "Jeweler not available. Install it s with: [sudo] gem install jeweler"
27
+ end
28
+ rescue LoadError
29
+ puts "Bundler not available. Install it s with: [sudo] gem install bundler"
30
+ end
31
+
32
+
33
+ desc "Release the gem"
34
+ task :"release:gem" do
35
+ %x(
36
+ rake gemspec
37
+ rake build
38
+ rake install
39
+ git add .
40
+ )
41
+ puts "Commit message:"
42
+ message = STDIN.gets
43
+
44
+ version = "#{File.open(File::dirname(__FILE__) + "/VERSION").readlines().first}"
45
+
46
+ %x(
47
+ git commit -m "#{message}"
48
+
49
+ git push origin master
50
+
51
+ gem push pkg/jar_wrapper-#{version}.gem
52
+ )
53
+ end
54
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,54 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{jar_wrapper}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = [%q{Alexander Shvets}]
12
+ s.date = %q{2011-09-23}
13
+ s.description = %q{Jar wrapper for executable java jar.}
14
+ s.email = %q{alexander.shvets@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "README"
17
+ ]
18
+ s.files = [
19
+ "CHANGES",
20
+ "README",
21
+ "Rakefile",
22
+ "VERSION",
23
+ "jar_wrapper.gemspec",
24
+ "lib/jar_wrapper.rb",
25
+ "lib/jar_wrapper/jar_wrapper.rb"
26
+ ]
27
+ s.homepage = %q{http://github.com/shvets/jar_wrapper}
28
+ s.require_paths = [%q{lib}]
29
+ s.requirements = [%q{none}]
30
+ s.rubygems_version = %q{1.8.6}
31
+ s.summary = %q{Jar wrapper for executable java jar (Summary).}
32
+
33
+ if s.respond_to? :specification_version then
34
+ s.specification_version = 3
35
+
36
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
37
+ s.add_runtime_dependency(%q<jeweler>, [">= 0"])
38
+ s.add_runtime_dependency(%q<zip>, [">= 0"])
39
+ s.add_runtime_dependency(%q<jeweler>, [">= 0"])
40
+ s.add_runtime_dependency(%q<zip>, [">= 0"])
41
+ else
42
+ s.add_dependency(%q<jeweler>, [">= 0"])
43
+ s.add_dependency(%q<zip>, [">= 0"])
44
+ s.add_dependency(%q<jeweler>, [">= 0"])
45
+ s.add_dependency(%q<zip>, [">= 0"])
46
+ end
47
+ else
48
+ s.add_dependency(%q<jeweler>, [">= 0"])
49
+ s.add_dependency(%q<zip>, [">= 0"])
50
+ s.add_dependency(%q<jeweler>, [">= 0"])
51
+ s.add_dependency(%q<zip>, [">= 0"])
52
+ end
53
+ end
54
+
@@ -0,0 +1,154 @@
1
+ require 'open-uri'
2
+
3
+ class JarWrapper
4
+ attr_accessor :main_class, :classpath, :jar_file, :java_opts
5
+
6
+ def install source, destination
7
+ download_file_to(source, destination)
8
+
9
+ unzip_file(destination) if destination =~ /\.zip$/
10
+ end
11
+
12
+ def run args
13
+ construct_command(args) do |command|
14
+ exec(command.join(" "))
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def construct_command(args="")
21
+ command = ["java"]
22
+ command.push(*java_args)
23
+ # command.push("-Xbootclasspath/a:#{jruby_complete}")
24
+ # command.push("-Dfile.encoding=UTF8", "-Xmx320m", "-Xss1024k", "-Djruby.memory.max=320m", "-Djruby.stack.max=1024k", "org.jruby.Main")
25
+ command.push(*java_opts) if java_opts.length > 0
26
+
27
+ command.push("-jar", jar_file) if jar_file
28
+ command.push("-cp", classpath, main_class) if main_class
29
+
30
+ #command.push("-Djruby.memory.max=500m", "-Djruby.stack.max=1024k", "-cp", jruby_complete, "org.jruby.Main")
31
+
32
+ command.push "--debug" if debug_mode?
33
+
34
+ command.push(*cleaned_args(args))
35
+
36
+ puts command.join(' ')
37
+ yield command
38
+ end
39
+
40
+ def cleaned_args args
41
+ # We should never pass --fork to a subprocess
42
+ result = args.find_all { |arg| arg != '--fork' }.map do |arg|
43
+ if arg =~ /--(.+)=(.+)/
44
+ "--" + $1 + "=\"" + $2 + "\""
45
+ else
46
+ arg
47
+ end
48
+ end
49
+ result.delete("install")
50
+ result
51
+ end
52
+
53
+ def debug_mode?
54
+ ARGV.include?("--debug")
55
+ end
56
+
57
+ def java_args
58
+ str = []
59
+ if Config::CONFIG["host_os"] =~ /darwin/
60
+ str.push "-XstartOnFirstThread"
61
+ end
62
+
63
+ str.push "-d32" if d32?
64
+ str.push "-client" if client?
65
+
66
+ str
67
+ end
68
+
69
+ def redirect
70
+ @redirect ||= "> #{null_device} 2>&1"
71
+ end
72
+
73
+ def d32?
74
+ @d32 ||= system("java -d32 #{redirect}")
75
+ end
76
+
77
+ def client?
78
+ @client ||= system("java -client #{redirect}")
79
+ end
80
+
81
+ # @return [:osx/:windows/:linux]
82
+ def platform
83
+ case Config::CONFIG["target_os"]
84
+ when /darwin/
85
+ :osx
86
+ when /mswin|mingw/
87
+ :windows
88
+ when /linux/
89
+ :linux
90
+ end
91
+ end
92
+
93
+ def null_device
94
+ case platform
95
+ when :windows
96
+ 'nul'
97
+ else
98
+ '/dev/null'
99
+ end
100
+ end
101
+
102
+ def download_file_to(uri, destination_file)
103
+ print " downloading #{uri}... "; $stdout.flush
104
+
105
+ temp = destination_file + ".part"
106
+ FileUtils.mkdir_p(File.dirname(destination_file))
107
+
108
+ File.open(temp, "wb") do |out_file|
109
+ open(uri) do |in_file|
110
+ done = false
111
+
112
+ while(!done) do
113
+ buffer = in_file.read(1024*1000)
114
+ out_file.write(buffer)
115
+
116
+ if buffer.nil? || buffer.size == 0
117
+ done = true
118
+ else
119
+ print("#"); $stdout.flush
120
+ end
121
+ end
122
+ end
123
+ end
124
+
125
+ if File.open(temp).read(200) =~ /Access Denied/
126
+ puts "\n\n*** Error downloading #{uri}, got Access Denied from S3."
127
+ FileUtils.rm_rf(temp)
128
+ exit
129
+ end
130
+
131
+ FileUtils.cp(temp, destination_file)
132
+ FileUtils.rm_rf(temp)
133
+ puts "\ndone!"
134
+ end
135
+
136
+ # unzip a .zip file into the directory it is located
137
+ def unzip_file(path)
138
+ print "unzipping #{path}..."; $stdout.flush
139
+ source = File.expand_path(path)
140
+ Dir.chdir(File.dirname(source)) do
141
+ Zip::ZipFile.open(source) do |zipfile|
142
+ zipfile.entries.each do |entry|
143
+ FileUtils.mkdir_p(File.dirname(entry.name))
144
+ begin
145
+ entry.extract
146
+ rescue Zip::ZipDestinationFileExistsError
147
+ end
148
+ end
149
+ end
150
+ end
151
+ end
152
+ end
153
+
154
+
@@ -0,0 +1,14 @@
1
+ require 'rubygems' unless RUBY_VERSION =~ /1.9.*/
2
+
3
+ $:.unshift(File.dirname(__FILE__)) unless
4
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
5
+
6
+ require 'fileutils'
7
+ require 'net/http'
8
+
9
+ require 'jar_wrapper/jar_wrapper'
10
+
11
+ require 'rbconfig'
12
+ WINDOZE = Config::CONFIG['host_os'] =~ /mswin|mingw|windows/
13
+
14
+ WINDOZE ? (require "zip/zipfilesystem") : (require 'zip/zip')
metadata ADDED
@@ -0,0 +1,97 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jar_wrapper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Alexander Shvets
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-09-23 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: jeweler
16
+ requirement: &2157099060 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2157099060
25
+ - !ruby/object:Gem::Dependency
26
+ name: zip
27
+ requirement: &2157097980 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2157097980
36
+ - !ruby/object:Gem::Dependency
37
+ name: jeweler
38
+ requirement: &2157097320 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *2157097320
47
+ - !ruby/object:Gem::Dependency
48
+ name: zip
49
+ requirement: &2157096540 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *2157096540
58
+ description: Jar wrapper for executable java jar.
59
+ email: alexander.shvets@gmail.com
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files:
63
+ - README
64
+ files:
65
+ - CHANGES
66
+ - README
67
+ - Rakefile
68
+ - VERSION
69
+ - jar_wrapper.gemspec
70
+ - lib/jar_wrapper.rb
71
+ - lib/jar_wrapper/jar_wrapper.rb
72
+ homepage: http://github.com/shvets/jar_wrapper
73
+ licenses: []
74
+ post_install_message:
75
+ rdoc_options: []
76
+ require_paths:
77
+ - lib
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ none: false
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ requirements:
91
+ - none
92
+ rubyforge_project:
93
+ rubygems_version: 1.8.6
94
+ signing_key:
95
+ specification_version: 3
96
+ summary: Jar wrapper for executable java jar (Summary).
97
+ test_files: []