gemjam 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1,29 +1,48 @@
1
1
  #!/usr/bin/env rake
2
2
 
3
3
  require "bundler/gem_tasks"
4
+ require 'find'
5
+ require 'fileutils'
6
+ require 'erb'
4
7
  require "rake/clean"
5
8
  require File.expand_path('../lib/gemjam/version', __FILE__)
6
9
 
7
- def git_rev
8
- `git rev-parse --short HEAD`.chomp
9
- end
10
+ def git_rev
11
+ `git rev-parse --short HEAD`.chomp
12
+ end
10
13
 
11
14
  @dist = ENV["dist"] || ".fc16"
12
15
  @d_dist = " --define 'dist #{@dist}'"
13
- @d_version = " --define 'version #{Gemjam::VERSION}'"
14
- @d_gitrev = "--define 'gitrev #{git_rev}'"
15
16
 
16
- @gemfile = "pkg/gemjam-#{Gemjam::VERSION}.gem"
17
- @srpmfile = "rpmbuild/SRPMS/jrubygem-gemjam-#{Gemjam::VERSION}-#{git_rev}#{@dist}.src.rpm"
17
+ @rpmname = "jrubygem-gemjam"
18
+ @gemfile = "pkg/gemjam-#{Gemjam::VERSION}.gem"
19
+ @rpmspecfile = "rpmbuild/SPECS/#{@rpmname}.spec"
20
+ @srpmfile = "rpmbuild/SRPMS/#{@rpmname}-#{Gemjam::VERSION}-#{git_rev}#{@dist}.src.rpm"
18
21
 
19
22
  task :default => :build
20
23
 
21
- CLEAN.include 'pkg/'
22
- CLEAN.include 'rpmbuild/'
24
+ %w{ ./pkg/ ./rpmbuild/ }.each do |dir|
25
+ if FileTest.directory? dir
26
+ Find.find(dir) do |path|
27
+ CLEAN.include path if FileTest.file? path
28
+ end
29
+ end
30
+ end
31
+
32
+ desc "RPM spec from erb"
33
+ task @rpmspecfile do
34
+ t = ERB.new(File.read("#{@rpmname}.spec.erb"))
35
+ FileUtils.mkdir_p(File.dirname(@rpmspecfile))
36
+ File.open(@rpmspecfile, "w") do |file|
37
+ @version = Gemjam::VERSION
38
+ @gitrev = git_rev()
39
+ file.write(t.result(binding))
40
+ end
41
+ end
23
42
 
24
43
  desc "Build a SRPM for brew"
25
- task :srpm => [:build] do
26
- cmd = "rpmbuild -bs --nodeps #{@d_dist} #{@d_version} #{@d_gitrev} --define '_sourcedir ./pkg/' --define '_srcrpmdir rpmbuild/SRPMS' ./jrubygem-gemjam.spec"
44
+ task :srpm => [@rpmspecfile, :build] do
45
+ cmd = "rpmbuild -bs --nodeps #{@d_dist} --define '_sourcedir ./pkg/' --define '_srcrpmdir rpmbuild/SRPMS' ./#{@rpmspecfile}"
27
46
  puts cmd
28
47
  system cmd
29
48
  end
@@ -31,7 +50,7 @@ end
31
50
 
32
51
  desc "Build an RPM (Optional: set 'dist' env)"
33
52
  task :rpm => [:srpm] do
34
- cmd = "rpmbuild --rebuild #{@d_dist} #{@d_version} #{@d_gitrev} --define '_rpmdir rpmbuild/RPMS' ./#{@srpmfile}"
53
+ cmd = "rpmbuild --rebuild #{@d_dist} --define '_rpmdir rpmbuild/RPMS' ./#{@srpmfile}"
35
54
  puts cmd
36
55
  system cmd
37
56
  end
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
  gem.email = ["vbatts@redhat.com"]
7
7
  gem.description = %q{Create java jar, for jRuby, from gems or a bundler Gemfile}
8
8
  gem.summary = %q{Create java jar, for jRuby, from gems or a bundler Gemfile}
9
- gem.homepage = ""
9
+ gem.homepage = "https://github.com/vbatts/gemjam"
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
12
12
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -6,12 +6,10 @@
6
6
  %global gemdir %(%{ruby_exec} -rubygems -e 'puts Gem::dir' 2>/dev/null)
7
7
  %global geminstdir %{gemdir}/gems/%{gemname}-%{version}
8
8
 
9
- %define rel %{?gitrev}%{!?gitrev:1}
10
-
11
9
  Summary: Tool for packing rubygem dependencies, into a java jar
12
10
  Name: jrubygem-%{gemname}
13
- Version: %{?version}%{!?version:0.0.2}
14
- Release: %{rel}%{?dist}
11
+ Version: <%= @version || "0.0.5" %>
12
+ Release: <%= @gitrev || "1" %>%{?dist}
15
13
  Group: Development/Languages
16
14
  License: GPLv2+ or Ruby
17
15
  URL: http://git.corp.redhat.com/cgit/dev/towers/engineering/gems/gemjam/
@@ -54,7 +52,7 @@ rm -rf %{buildroot}
54
52
  %{geminstdir}/lib
55
53
  %{geminstdir}/LICENSE
56
54
  %{geminstdir}/README.md
57
- %exclude %{geminstdir}/%{name}.spec
55
+ %exclude %{geminstdir}/%{name}.spec.erb
58
56
  %exclude %{geminstdir}/%{gemname}.gemspec
59
57
  %exclude %{geminstdir}/Gemfile
60
58
  %exclude %{geminstdir}/Rakefile
@@ -21,6 +21,12 @@ module Gemjam
21
21
  }
22
22
  opts = OptionParser.new do |opts|
23
23
  opts.banner = File.basename(__FILE__) + "[-b [Gemfile]] [-g gem[,version]]..."
24
+ opts.on("-o", "--output FILENAME", "output to jar FILENAME") do |o|
25
+ options[:output] = o
26
+ end
27
+ opts.on("-c", "--cache", "preserve the cach/*.gem files in the jar") do |o|
28
+ options[:cache] = o
29
+ end
24
30
  opts.on("-q", "--quiet", "less output") do |o|
25
31
  options[:quiet] = o
26
32
  end
@@ -40,6 +46,12 @@ module Gemjam
40
46
  File.expand_path(o)
41
47
  end
42
48
  end
49
+ opts.on("--with WITH", "bundle install --with 'foo bar' (if needed)") do |o|
50
+ options[:bundle_with] = o
51
+ end
52
+ opts.on("--without WITHOUT", "bundle install --without 'foo bar' (if needed)") do |o|
53
+ options[:bundle_without] = o
54
+ end
43
55
  end.parse!(args)
44
56
  return options
45
57
  end
@@ -81,8 +93,9 @@ module Gemjam
81
93
  # install the bundle, using jruby command +jruby+
82
94
  #
83
95
  # sets $? with that commands return value
84
- def bundle_install(jruby, quiet = false)
85
- cmd("#{jruby} -S bundle install --path ./vendor/bundle/", quiet)
96
+ def bundle_install(jruby, quiet = false, opts = {})
97
+ ex_opts = opts.map {|k,v| [k,v] }.join(" ")
98
+ cmd("#{jruby} -S bundle install --path ./vendor/bundle/ #{ex_opts}", quiet)
86
99
  end
87
100
 
88
101
  def bundler_vendor_dir
@@ -92,31 +105,44 @@ module Gemjam
92
105
 
93
106
  end
94
107
 
95
- def main(args)
96
- o = parse_args(args)
97
- p o unless o[:quiet]
98
-
108
+ def run(opts)
99
109
  tmpdir = Dir.mktmpdir
100
110
  begin
101
111
  cwd = Dir.pwd
102
- if o[:bundle]
112
+ if opts[:bundle]
113
+
114
+ b_opts = {}
115
+ b_opts["--with"] = opts[:bundle_with] if opts[:bundle_with]
116
+ b_opts["--without"] = opts[:bundle_without] if opts[:bundle_without]
117
+
103
118
  FileUtils.cd tmpdir
104
- FileUtils.cp o[:bundle], "Gemfile"
105
- bundle_install(o[:jruby], o[:quiet])
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
125
+ bundle_install(opts[:jruby], opts[:quiet], b_opts)
126
+ end
106
127
  FileUtils.cd cwd
107
128
  abort("FAIL: bundler returned: #{$?}") if $? != 0
108
129
  end
109
130
 
110
- o[:gems].each do |gem|
111
- gem_install(o[:jruby], File.join(tmpdir, bundler_vendor_dir), gem, o[:quiet])
131
+ opts[:gems].each do |gem|
132
+ gem_install(opts[:jruby], File.join(tmpdir, bundler_vendor_dir), gem, opts[:quiet])
112
133
  abort("FAIL: gem install returned: #{$?}") if $? != 0
113
134
  end
114
135
 
115
- jarname = File.basename(tmpdir) + ".jar"
116
- make_jar(jarname, File.join(tmpdir, bundler_vendor_dir), o[:quiet])
136
+ # the ./cache/*.gems just duplicates the size of this jar
137
+ unless opts[:cache]
138
+ FileUtils.remove_entry_secure(File.join(tmpdir, bundler_vendor_dir, "cache"), true)
139
+ end
140
+
141
+ jarname = opts[:output] ? opts[:output] : File.basename(tmpdir) + ".jar"
142
+ make_jar(jarname, File.join(tmpdir, bundler_vendor_dir), opts[:quiet])
117
143
  abort("FAIL: jar packaging returned: #{$?}") if $? != 0
118
144
 
119
- if o[:quiet]
145
+ if opts[:quiet]
120
146
  puts jarname
121
147
  else
122
148
  puts "Created #{jarname}"
@@ -126,4 +152,11 @@ module Gemjam
126
152
  FileUtils.remove_entry_secure(tmpdir, true)
127
153
  end
128
154
  end
155
+
156
+ def main(args)
157
+ o = parse_args(args)
158
+ p o unless o[:quiet]
159
+
160
+ run(o)
161
+ end
129
162
  end
@@ -1,3 +1,3 @@
1
1
  module Gemjam
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
metadata CHANGED
@@ -1,33 +1,24 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: gemjam
3
- version: !ruby/object:Gem::Version
4
- hash: 21
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.6
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 5
10
- version: 0.0.5
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Vincent Batts
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-07-25 00:00:00 Z
12
+ date: 2013-07-26 00:00:00.000000000 Z
19
13
  dependencies: []
20
-
21
14
  description: Create java jar, for jRuby, from gems or a bundler Gemfile
22
- email:
15
+ email:
23
16
  - vbatts@redhat.com
24
- executables:
17
+ executables:
25
18
  - gemjam
26
19
  extensions: []
27
-
28
20
  extra_rdoc_files: []
29
-
30
- files:
21
+ files:
31
22
  - .gitignore
32
23
  - Gemfile
33
24
  - LICENSE
@@ -35,41 +26,32 @@ files:
35
26
  - Rakefile
36
27
  - bin/gemjam
37
28
  - gemjam.gemspec
38
- - jrubygem-gemjam.spec
29
+ - jrubygem-gemjam.spec.erb
39
30
  - lib/gemjam.rb
40
31
  - lib/gemjam/version.rb
41
- homepage: ""
32
+ homepage: https://github.com/vbatts/gemjam
42
33
  licenses: []
43
-
44
34
  post_install_message:
45
35
  rdoc_options: []
46
-
47
- require_paths:
36
+ require_paths:
48
37
  - lib
49
- required_ruby_version: !ruby/object:Gem::Requirement
38
+ required_ruby_version: !ruby/object:Gem::Requirement
50
39
  none: false
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- hash: 3
55
- segments:
56
- - 0
57
- version: "0"
58
- required_rubygems_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
45
  none: false
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- hash: 3
64
- segments:
65
- - 0
66
- version: "0"
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
67
50
  requirements: []
68
-
69
51
  rubyforge_project:
70
- rubygems_version: 1.8.11
52
+ rubygems_version: 1.8.17
71
53
  signing_key:
72
54
  specification_version: 3
73
55
  summary: Create java jar, for jRuby, from gems or a bundler Gemfile
74
56
  test_files: []
75
-
57
+ has_rdoc: