javagems 0.4.2 → 0.4.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.
data/.gitignore CHANGED
@@ -1,21 +1,4 @@
1
- ## MAC OS
2
1
  .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
2
  *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
3
+ *.swo
19
4
  pkg
20
-
21
- ## PROJECT::SPECIFIC
data/Rakefile CHANGED
@@ -6,6 +6,7 @@ begin
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "javagems"
8
8
  gem.executables << "javagem"
9
+ gem.executables << "javagem-exec"
9
10
  gem.summary = %Q{A gem for the javagems system}
10
11
  gem.description = %Q{Provides gem-esque support to Java}
11
12
  gem.email = "gabriel.gironda@gmail.com"
@@ -14,6 +15,7 @@ begin
14
15
  gem.add_dependency "gemcutter"
15
16
  gem.add_dependency "jeweler"
16
17
  gem.add_dependency "bundler"
18
+ gem.add_dependency "cmdparse"
17
19
  gem.add_development_dependency "riot"
18
20
  end
19
21
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.2
1
+ 0.4.3
data/bin/javagem CHANGED
@@ -1,10 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
- require 'rubygems'
3
- require 'javagems/commands/javagem_command'
4
- require 'rubygems/command_manager'
5
2
  require 'pathname'
6
3
  $: << (Pathname(__FILE__).parent.parent + "lib").expand_path.to_s
7
-
4
+ require 'javagems/gem_overrides'
5
+ require 'rubygems/command_manager'
8
6
  require "rubygems/commands/jeweler_command"
9
7
  require "rubygems/commands/classpath_command"
10
8
 
data/bin/javagem-exec ADDED
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env ruby
2
+ # NOT A GEM PLUGIN BECAUSE I'M CLEARLY TOO INEPT TO
3
+ # WORK WITH OPTPARSE AS IT IS USED IN A GEM PLUGIN.
4
+ require 'pathname'
5
+ $: << Pathname(__FILE__).parent.parent + "lib"
6
+ require 'javagems/gem_overrides'
7
+ require 'javagems/classpath_builder'
8
+ require 'optparse'
9
+
10
+ if sep = ARGV.index("--")
11
+ rest = ARGV[(sep + 1)..-1]
12
+ opts = ARGV.slice(0, sep)
13
+ else
14
+ rest = ARGV
15
+ opts = []
16
+ end
17
+
18
+ options = {}
19
+ parser = OptionParser.new do |opt_parse|
20
+ opt_parse.banner = <<EOU.gsub(/^\s+/, '')
21
+ Usage: #{$0} [options] -- command
22
+ The -- is unnecessary if no options are specified.
23
+ EOU
24
+
25
+ opt_parse.on("-m", "--manifest GEMFILE", "Gem manifest file to use") do |m|
26
+ options[:manifest] = m
27
+ end
28
+ end
29
+
30
+ if ARGV.empty?
31
+ puts parser.to_s
32
+ exit 1
33
+ else
34
+ parser.parse(opts)
35
+ cp_builder = JavaGems::ClasspathBuilder.new
36
+ cp = cp_builder.classpath_for(options[:manifest])
37
+ ENV['CLASSPATH'] = ENV['CLASSPATH'] ? "#{cp}#{File::PATH_SEPARATOR}#{ENV['CLASSPATH']}" : cp
38
+ exec(*rest)
39
+ end
data/javagems.gemspec CHANGED
@@ -5,32 +5,29 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{javagems}
8
- s.version = "0.4.2"
8
+ s.version = "0.4.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["gabrielg", "jaknowlden"]
12
- s.date = %q{2009-11-14}
12
+ s.date = %q{2009-11-19}
13
13
  s.description = %q{Provides gem-esque support to Java}
14
14
  s.email = %q{gabriel.gironda@gmail.com}
15
- s.executables = ["javagem", "javagem"]
15
+ s.executables = ["javagem", "javagem-exec", "javagem", "javagem-exec"]
16
16
  s.extra_rdoc_files = [
17
17
  "LICENSE",
18
18
  "README.rdoc"
19
19
  ]
20
20
  s.files = [
21
- ".document",
22
- ".gitignore",
23
- ".gitignore",
24
- "LICENSE",
21
+ ".gitignore",
25
22
  "LICENSE",
26
23
  "README.rdoc",
27
24
  "Rakefile",
28
- "Rakefile",
29
25
  "VERSION",
30
26
  "bin/javagem",
27
+ "bin/javagem-exec",
31
28
  "javagems.gemspec",
32
29
  "lib/javagems.rb",
33
- "lib/javagems/commands/javagem_command.rb",
30
+ "lib/javagems/classpath_builder.rb",
34
31
  "lib/javagems/gem_overrides.rb",
35
32
  "lib/rubygems/commands/classpath_command.rb",
36
33
  "lib/rubygems/commands/jeweler_command.rb",
@@ -125,6 +122,35 @@ Gem::Specification.new do |s|
125
122
  s.require_paths = ["lib"]
126
123
  s.rubygems_version = %q{1.3.5}
127
124
  s.summary = %q{A gem for the javagems system}
125
+ s.test_files = [
126
+ "test/classpath_command_test.rb",
127
+ "test/gem_overrides_test.rb",
128
+ "test/invalid_test_app/vendor/gems/dirs/test-gem-four/lib/test-gem-four.rb",
129
+ "test/invalid_test_app/vendor/gems/dirs/test-gem-four/test/helper.rb",
130
+ "test/invalid_test_app/vendor/gems/dirs/test-gem-four/test/test_test-gem-four.rb",
131
+ "test/invalid_test_app/vendor/gems/dirs/test-gem-one/lib/test-gem-one.rb",
132
+ "test/invalid_test_app/vendor/gems/dirs/test-gem-one/test/helper.rb",
133
+ "test/invalid_test_app/vendor/gems/dirs/test-gem-one/test/test_test-gem-one.rb",
134
+ "test/invalid_test_app/vendor/gems/dirs/test-gem-two/lib/test-gem-two.rb",
135
+ "test/invalid_test_app/vendor/gems/dirs/test-gem-two/test/helper.rb",
136
+ "test/invalid_test_app/vendor/gems/dirs/test-gem-two/test/test_test-gem-two.rb",
137
+ "test/invalid_test_app/vendor/gems/environment.rb",
138
+ "test/jeweler_command_test.rb",
139
+ "test/test_helper.rb",
140
+ "test/valid_test_app/vendor/gems/dirs/test-gem-four/lib/test-gem-four.rb",
141
+ "test/valid_test_app/vendor/gems/dirs/test-gem-four/test/helper.rb",
142
+ "test/valid_test_app/vendor/gems/dirs/test-gem-four/test/test_test-gem-four.rb",
143
+ "test/valid_test_app/vendor/gems/dirs/test-gem-one/lib/test-gem-one.rb",
144
+ "test/valid_test_app/vendor/gems/dirs/test-gem-one/test/helper.rb",
145
+ "test/valid_test_app/vendor/gems/dirs/test-gem-one/test/test_test-gem-one.rb",
146
+ "test/valid_test_app/vendor/gems/dirs/test-gem-three/lib/test-gem-three.rb",
147
+ "test/valid_test_app/vendor/gems/dirs/test-gem-three/test/helper.rb",
148
+ "test/valid_test_app/vendor/gems/dirs/test-gem-three/test/test_test-gem-three.rb",
149
+ "test/valid_test_app/vendor/gems/dirs/test-gem-two/lib/test-gem-two.rb",
150
+ "test/valid_test_app/vendor/gems/dirs/test-gem-two/test/helper.rb",
151
+ "test/valid_test_app/vendor/gems/dirs/test-gem-two/test/test_test-gem-two.rb",
152
+ "test/valid_test_app/vendor/gems/environment.rb"
153
+ ]
128
154
 
129
155
  if s.respond_to? :specification_version then
130
156
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
@@ -134,17 +160,20 @@ Gem::Specification.new do |s|
134
160
  s.add_runtime_dependency(%q<gemcutter>, [">= 0"])
135
161
  s.add_runtime_dependency(%q<jeweler>, [">= 0"])
136
162
  s.add_runtime_dependency(%q<bundler>, [">= 0"])
163
+ s.add_runtime_dependency(%q<cmdparse>, [">= 0"])
137
164
  s.add_development_dependency(%q<riot>, [">= 0"])
138
165
  else
139
166
  s.add_dependency(%q<gemcutter>, [">= 0"])
140
167
  s.add_dependency(%q<jeweler>, [">= 0"])
141
168
  s.add_dependency(%q<bundler>, [">= 0"])
169
+ s.add_dependency(%q<cmdparse>, [">= 0"])
142
170
  s.add_dependency(%q<riot>, [">= 0"])
143
171
  end
144
172
  else
145
173
  s.add_dependency(%q<gemcutter>, [">= 0"])
146
174
  s.add_dependency(%q<jeweler>, [">= 0"])
147
175
  s.add_dependency(%q<bundler>, [">= 0"])
176
+ s.add_dependency(%q<cmdparse>, [">= 0"])
148
177
  s.add_dependency(%q<riot>, [">= 0"])
149
178
  end
150
179
  end
@@ -0,0 +1,38 @@
1
+ require 'bundler'
2
+
3
+ module JavaGems
4
+ class ClasspathBuilder
5
+ class ClasspathError < RuntimeError; end
6
+
7
+ def classpath_for(gemfile)
8
+ with_hijacked_bundler_logging do
9
+ bundler_env = Bundler::Environment.load(gemfile)
10
+ deps = bundler_env.dependencies.map {|dep| dep.to_gem_dependency }
11
+ cp = Bundler::Resolver.resolve(deps, sources).collect do |spec|
12
+ (Pathname(spec.full_gem_path) + "lib").expand_path.to_s
13
+ end.join(File::PATH_SEPARATOR)
14
+ end
15
+
16
+ rescue => e
17
+ raise ClasspathError, "#{e.message} - #{@hijacked_out.read}"
18
+ end
19
+
20
+ private
21
+
22
+ def with_hijacked_bundler_logging
23
+ @hijacked_out = StringIO.new
24
+ real_logger, Bundler.logger = Bundler.logger, Logger.new(@hijacked_out, Logger::INFO)
25
+ Bundler.logger.formatter = real_logger.formatter
26
+ yield
27
+ ensure
28
+ @hijacked_out.rewind
29
+ Bundler.logger = real_logger
30
+ end
31
+
32
+ # FIXME - Until we have actual bundler support, use the Gem home source index.
33
+ def sources
34
+ [Bundler::DirectorySource.new(:location => Gem.configuration.home)]
35
+ end
36
+
37
+ end # ClasspathBuilder
38
+ end # JavaGems
@@ -3,6 +3,8 @@ require 'rubygems/gem_runner'
3
3
  require 'rubygems/exceptions'
4
4
  require 'bundler'
5
5
 
6
+ ENV['GEMCUTTER_URL'] = ENV['JAVAGEMS_URL'] || "https://gems.javagems.org/"
7
+
6
8
  module Gem
7
9
  DefaultGemConfigName = ".javagemrc"
8
10
 
@@ -18,6 +20,7 @@ module Gem
18
20
  :gempath => [File.join(Gem.user_home, ".javagem/java")]
19
21
  )
20
22
 
23
+ @configuration = nil # To force Gem to re-read the config
21
24
  end
22
25
 
23
26
  class Gem::AbstractCommand < Gem::Command
@@ -1,11 +1,14 @@
1
1
  require 'rubygems/command'
2
2
  require 'bundler'
3
+ require 'javagems/classpath_builder'
3
4
  require 'stringio'
4
5
 
5
6
  class Gem::Commands::ClasspathCommand < Gem::Command
7
+ attr_reader :cp_builder
6
8
 
7
9
  def initialize
8
10
  super 'classpath', "Given a Gemfile, returns the classpath necessary to satisfy dependencies"
11
+ @cp_builder = JavaGems::ClasspathBuilder.new
9
12
  end
10
13
 
11
14
  def usage
@@ -13,37 +16,11 @@ class Gem::Commands::ClasspathCommand < Gem::Command
13
16
  end
14
17
 
15
18
  def execute
16
- with_hijacked_bundler_logging do
17
- bundler_env = Bundler::Environment.load(options[:args].first)
18
- deps = bundler_env.dependencies.map {|dep| dep.to_gem_dependency }
19
-
20
- cp = Bundler::Resolver.resolve(deps, sources).collect do |spec|
21
- (Pathname(spec.full_gem_path) + "lib").expand_path.to_s
22
- end.join(File::PATH_SEPARATOR)
23
- say(cp)
24
- end
19
+ say(@cp_builder.classpath_for(options[:args].first))
25
20
  rescue => e
26
21
  alert_error(e.message)
27
- @hijacked_out.readlines.each { |l| alert_error(l.strip) }
28
22
  exit 1
29
23
  end
30
24
 
31
- private
32
-
33
- def with_hijacked_bundler_logging
34
- @hijacked_out = StringIO.new
35
- real_logger, Bundler.logger = Bundler.logger, Logger.new(@hijacked_out, Logger::INFO)
36
- Bundler.logger.formatter = real_logger.formatter
37
- yield
38
- ensure
39
- @hijacked_out.rewind
40
- Bundler.logger = real_logger
41
- end
42
-
43
- # FIXME - Until we have actual bundler support, use the system source index.
44
- def sources
45
- [Bundler::SystemGemSource.instance]
46
- end
47
-
48
25
  end
49
26
 
@@ -8,7 +8,8 @@ context "the classpath command" do
8
8
  setup do
9
9
  @command = Gem::Commands::ClasspathCommand.new
10
10
  # FIXME - ghetto-mock
11
- def @command.sources
11
+ cp_builder = @command.cp_builder
12
+ def cp_builder.sources
12
13
  [Bundler::DirectorySource.new(:location => (TestRoot + "valid_test_app/vendor").expand_path.to_s)]
13
14
  end
14
15
  end
@@ -27,7 +28,8 @@ context "the classpath command" do
27
28
  setup do
28
29
  @command = Gem::Commands::ClasspathCommand.new
29
30
  # FIXME - ghetto-mock
30
- def @command.sources
31
+ cp_builder = @command.cp_builder
32
+ def cp_builder.sources
31
33
  [Bundler::DirectorySource.new(:location => (TestRoot + "invalid_test_app/vendor").expand_path.to_s)]
32
34
  end
33
35
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: javagems
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - gabrielg
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-11-14 00:00:00 -06:00
13
+ date: 2009-11-19 00:00:00 -06:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -43,6 +43,16 @@ dependencies:
43
43
  - !ruby/object:Gem::Version
44
44
  version: "0"
45
45
  version:
46
+ - !ruby/object:Gem::Dependency
47
+ name: cmdparse
48
+ type: :runtime
49
+ version_requirement:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: "0"
55
+ version:
46
56
  - !ruby/object:Gem::Dependency
47
57
  name: riot
48
58
  type: :development
@@ -57,23 +67,25 @@ description: Provides gem-esque support to Java
57
67
  email: gabriel.gironda@gmail.com
58
68
  executables:
59
69
  - javagem
70
+ - javagem-exec
60
71
  - javagem
72
+ - javagem-exec
61
73
  extensions: []
62
74
 
63
75
  extra_rdoc_files:
64
76
  - LICENSE
65
77
  - README.rdoc
66
78
  files:
67
- - .document
68
79
  - .gitignore
69
80
  - LICENSE
70
81
  - README.rdoc
71
82
  - Rakefile
72
83
  - VERSION
73
84
  - bin/javagem
85
+ - bin/javagem-exec
74
86
  - javagems.gemspec
75
87
  - lib/javagems.rb
76
- - lib/javagems/commands/javagem_command.rb
88
+ - lib/javagems/classpath_builder.rb
77
89
  - lib/javagems/gem_overrides.rb
78
90
  - lib/rubygems/commands/classpath_command.rb
79
91
  - lib/rubygems/commands/jeweler_command.rb
@@ -190,5 +202,31 @@ rubygems_version: 1.3.5
190
202
  signing_key:
191
203
  specification_version: 3
192
204
  summary: A gem for the javagems system
193
- test_files: []
194
-
205
+ test_files:
206
+ - test/classpath_command_test.rb
207
+ - test/gem_overrides_test.rb
208
+ - test/invalid_test_app/vendor/gems/dirs/test-gem-four/lib/test-gem-four.rb
209
+ - test/invalid_test_app/vendor/gems/dirs/test-gem-four/test/helper.rb
210
+ - test/invalid_test_app/vendor/gems/dirs/test-gem-four/test/test_test-gem-four.rb
211
+ - test/invalid_test_app/vendor/gems/dirs/test-gem-one/lib/test-gem-one.rb
212
+ - test/invalid_test_app/vendor/gems/dirs/test-gem-one/test/helper.rb
213
+ - test/invalid_test_app/vendor/gems/dirs/test-gem-one/test/test_test-gem-one.rb
214
+ - test/invalid_test_app/vendor/gems/dirs/test-gem-two/lib/test-gem-two.rb
215
+ - test/invalid_test_app/vendor/gems/dirs/test-gem-two/test/helper.rb
216
+ - test/invalid_test_app/vendor/gems/dirs/test-gem-two/test/test_test-gem-two.rb
217
+ - test/invalid_test_app/vendor/gems/environment.rb
218
+ - test/jeweler_command_test.rb
219
+ - test/test_helper.rb
220
+ - test/valid_test_app/vendor/gems/dirs/test-gem-four/lib/test-gem-four.rb
221
+ - test/valid_test_app/vendor/gems/dirs/test-gem-four/test/helper.rb
222
+ - test/valid_test_app/vendor/gems/dirs/test-gem-four/test/test_test-gem-four.rb
223
+ - test/valid_test_app/vendor/gems/dirs/test-gem-one/lib/test-gem-one.rb
224
+ - test/valid_test_app/vendor/gems/dirs/test-gem-one/test/helper.rb
225
+ - test/valid_test_app/vendor/gems/dirs/test-gem-one/test/test_test-gem-one.rb
226
+ - test/valid_test_app/vendor/gems/dirs/test-gem-three/lib/test-gem-three.rb
227
+ - test/valid_test_app/vendor/gems/dirs/test-gem-three/test/helper.rb
228
+ - test/valid_test_app/vendor/gems/dirs/test-gem-three/test/test_test-gem-three.rb
229
+ - test/valid_test_app/vendor/gems/dirs/test-gem-two/lib/test-gem-two.rb
230
+ - test/valid_test_app/vendor/gems/dirs/test-gem-two/test/helper.rb
231
+ - test/valid_test_app/vendor/gems/dirs/test-gem-two/test/test_test-gem-two.rb
232
+ - test/valid_test_app/vendor/gems/environment.rb
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
@@ -1,2 +0,0 @@
1
- ENV['GEMCUTTER_URL'] = ENV['JAVAGEMS_URL'] || "https://gems.javagems.org/"
2
- require 'javagems/gem_overrides'