gemjam 0.0.6 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -16,6 +16,14 @@ Or install it yourself as:
16
16
 
17
17
  $ gem install gemjam
18
18
 
19
+
20
+ ## Dependencies
21
+
22
+ On fedora, for the java `jar` command:
23
+
24
+ yum install java-devel-openjdk
25
+
26
+
19
27
  ## Usage
20
28
 
21
29
  Package up a specific version of one gem, and latest version of another
@@ -76,20 +84,6 @@ How this is used practically aftwards
76
84
  23:36:22 up 133 days, 9:23, 0 users, load average: 0.06, 0.05, 0.05
77
85
 
78
86
 
79
- or
80
-
81
- $ gemjam -g warbler
82
- {:jruby=>"jruby", :gems=>["warbler"]}
83
- Successfully installed rake-10.1.0
84
- Successfully installed jruby-jars-1.7.4
85
- Successfully installed warbler-1.3.8
86
- 3 gems installed
87
- Created d20130723-24956-4o39ld.jar
88
- $ jruby -r ./d20130723-24956-4o39ld.jar -S warble
89
- rm -f hurp.war
90
- Creating hurp.war
91
-
92
-
93
87
  ## Contributing
94
88
 
95
89
  1. Fork it
data/Rakefile CHANGED
@@ -11,7 +11,7 @@ def git_rev
11
11
  `git rev-parse --short HEAD`.chomp
12
12
  end
13
13
 
14
- @dist = ENV["dist"] || ".fc16"
14
+ @dist = ENV["dist"] || ".el6"
15
15
  @d_dist = " --define 'dist #{@dist}'"
16
16
 
17
17
  @rpmname = "jrubygem-gemjam"
data/bin/gemjam CHANGED
@@ -2,6 +2,5 @@
2
2
 
3
3
  require "gemjam"
4
4
 
5
- include Gemjam
6
- main(ARGV)
5
+ Gemjam.main(ARGV)
7
6
 
@@ -11,6 +11,7 @@ require "optparse"
11
11
  require "rbconfig"
12
12
  require "tmpdir"
13
13
  require "fileutils"
14
+ require "stringio"
14
15
 
15
16
  module Gemjam
16
17
  def parse_args(args)
@@ -24,6 +25,9 @@ module Gemjam
24
25
  opts.on("-o", "--output FILENAME", "output to jar FILENAME") do |o|
25
26
  options[:output] = o
26
27
  end
28
+ opts.on("--keep", "preserve the temp working directory (for debugging)") do |o|
29
+ options[:keep] = o
30
+ end
27
31
  opts.on("-c", "--cache", "preserve the cach/*.gem files in the jar") do |o|
28
32
  options[:cache] = o
29
33
  end
@@ -55,21 +59,23 @@ module Gemjam
55
59
  end.parse!(args)
56
60
  return options
57
61
  end
62
+ module_function :parse_args
58
63
 
59
64
  # runs +cmd+, and sets $? with that commands return value
60
- def cmd(cmd_str, quiet = false)
65
+ def cmd(cmd_str, quiet = false, io = $stdout)
61
66
  p cmd_str unless quiet
62
67
  IO.popen(cmd_str) do |f|
63
68
  loop do
64
69
  buf = f.read(1)
65
70
  break if buf.nil?
66
71
  unless quiet
67
- print buf
68
- $stdout.flush
72
+ io.print buf
73
+ io.flush
69
74
  end
70
75
  end
71
76
  end
72
77
  end
78
+ module_function :cmd
73
79
 
74
80
  # install rubygem +gemname+ to directory +basedir+ using jruby command +jruby+
75
81
  #
@@ -82,6 +88,7 @@ module Gemjam
82
88
  cmd("#{jruby} -S gem install -i #{basedir} #{gemname}", quiet)
83
89
  end
84
90
  end
91
+ module_function :gem_install
85
92
 
86
93
  # pack up the installed gems in +dirname+, to jar file +jarname+
87
94
  #
@@ -89,6 +96,7 @@ module Gemjam
89
96
  def make_jar(jarname, dirname, quiet = false)
90
97
  cmd("jar cf #{jarname} -C #{dirname} .", quiet)
91
98
  end
99
+ module_function :make_jar
92
100
 
93
101
  # install the bundle, using jruby command +jruby+
94
102
  #
@@ -97,14 +105,20 @@ module Gemjam
97
105
  ex_opts = opts.map {|k,v| [k,v] }.join(" ")
98
106
  cmd("#{jruby} -S bundle install --path ./vendor/bundle/ #{ex_opts}", quiet)
99
107
  end
100
-
101
- def bundler_vendor_dir
102
- return ["vendor","bundle",
103
- RbConfig::CONFIG["ruby_install_name"],
104
- RbConfig::CONFIG["ruby_version"]].join("/")
105
-
108
+ module_function :bundle_install
109
+
110
+ def bundler_vendor_dir(jruby)
111
+ return @bundler_vendor_dir if @bundler_vendor_dir
112
+ sio = StringIO.new
113
+ cmd("#{jruby} -e \"print ['vendor/bundle',RbConfig::CONFIG['ruby_install_name'], RbConfig::CONFIG['ruby_version'] ].join('/')\"",
114
+ false,
115
+ sio)
116
+ sio.seek(0)
117
+ @bundler_vendor_dir = sio.read()
106
118
  end
119
+ module_function :bundler_vendor_dir
107
120
 
121
+ # run(parse_args("-q","-o",jarname,"-b","Gemfile"))
108
122
  def run(opts)
109
123
  tmpdir = Dir.mktmpdir
110
124
  begin
@@ -115,31 +129,44 @@ module Gemjam
115
129
  b_opts["--with"] = opts[:bundle_with] if opts[:bundle_with]
116
130
  b_opts["--without"] = opts[:bundle_without] if opts[:bundle_without]
117
131
 
118
- FileUtils.cd tmpdir
119
- FileUtils.cp opts[:bundle], "Gemfile"
120
- if FileTest.file?("#{opts[:bundle]}.lock")
121
- FileUtils.cp "#{opts[:bundle]}.lock", "Gemfile.lock"
122
- b_opts["--deployment"] = ""
123
- bundle_install(opts[:jruby], opts[:quiet], b_opts)
124
- else
132
+ begin
133
+ FileUtils.cd tmpdir, :verbose => !opts[:quiet]
134
+ FileUtils.cp opts[:bundle], "Gemfile"
135
+
136
+ # If there is a bundler lockfile, then use it too
137
+ if FileTest.file?("#{opts[:bundle]}.lock")
138
+ FileUtils.cp "#{opts[:bundle]}.lock", "Gemfile.lock"
139
+
140
+ # ensure these timestamps match the original
141
+ File.utime(File.atime(opts[:bundle]),
142
+ File.mtime(opts[:bundle]),
143
+ "Gemfile")
144
+ File.utime(File.atime("#{opts[:bundle]}.lock"),
145
+ File.mtime("#{opts[:bundle]}.lock"),
146
+ "Gemfile.lock")
147
+
148
+ b_opts["--deployment"] = ""
149
+ end
150
+
125
151
  bundle_install(opts[:jruby], opts[:quiet], b_opts)
152
+ abort("FAIL: bundler returned: #{$?}") if $? != 0
153
+ ensure
154
+ FileUtils.cd cwd, :verbose => !opts[:quiet]
126
155
  end
127
- FileUtils.cd cwd
128
- abort("FAIL: bundler returned: #{$?}") if $? != 0
129
156
  end
130
157
 
131
158
  opts[:gems].each do |gem|
132
- gem_install(opts[:jruby], File.join(tmpdir, bundler_vendor_dir), gem, opts[:quiet])
159
+ gem_install(opts[:jruby], File.join(tmpdir, bundler_vendor_dir(opts[:jruby])), gem, opts[:quiet])
133
160
  abort("FAIL: gem install returned: #{$?}") if $? != 0
134
161
  end
135
162
 
136
163
  # the ./cache/*.gems just duplicates the size of this jar
137
164
  unless opts[:cache]
138
- FileUtils.remove_entry_secure(File.join(tmpdir, bundler_vendor_dir, "cache"), true)
165
+ FileUtils.remove_entry_secure(File.join(tmpdir, bundler_vendor_dir(opts[:jruby]), "cache"), true)
139
166
  end
140
167
 
141
168
  jarname = opts[:output] ? opts[:output] : File.basename(tmpdir) + ".jar"
142
- make_jar(jarname, File.join(tmpdir, bundler_vendor_dir), opts[:quiet])
169
+ make_jar(jarname, File.join(tmpdir, bundler_vendor_dir(opts[:jruby])), opts[:quiet])
143
170
  abort("FAIL: jar packaging returned: #{$?}") if $? != 0
144
171
 
145
172
  if opts[:quiet]
@@ -149,9 +176,10 @@ module Gemjam
149
176
  end
150
177
  ensure
151
178
  # remove the directory.
152
- FileUtils.remove_entry_secure(tmpdir, true)
179
+ FileUtils.remove_entry_secure(tmpdir, true) unless opts[:keep]
153
180
  end
154
181
  end
182
+ module_function :run
155
183
 
156
184
  def main(args)
157
185
  o = parse_args(args)
@@ -159,4 +187,5 @@ module Gemjam
159
187
 
160
188
  run(o)
161
189
  end
190
+ module_function :main
162
191
  end
@@ -1,3 +1,3 @@
1
1
  module Gemjam
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.8"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemjam
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-26 00:00:00.000000000 Z
12
+ date: 2013-08-13 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Create java jar, for jRuby, from gems or a bundler Gemfile
15
15
  email: