maven_gem 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/History.txt +5 -1
  2. data/Rakefile +5 -1
  3. data/lib/maven_gem.rb +1 -1
  4. data/lib/pom2gem.rb +57 -5
  5. metadata +8 -8
@@ -1,4 +1,8 @@
1
- === 1.0.0 / 2008-09-12
1
+ === 0.0.2 / 2009-05-14
2
+
3
+ * Better handling of versions with alpha characters, thanks to Stephen Bannasch
4
+
5
+ === 0.0.1 / 2009-04-17
2
6
 
3
7
  * 1 major enhancement
4
8
 
data/Rakefile CHANGED
@@ -5,7 +5,11 @@ require 'hoe'
5
5
  require './lib/maven_gem.rb'
6
6
 
7
7
  Hoe.new('maven_gem', MavenGem::VERSION) do |p|
8
- p.rubyforge_name = 'jruby_extras'
8
+ p.rubyforge_name = 'jruby-extras'
9
+ p.url = "http://github.com/jruby/maven_gem"
10
+ p.author = "charles.nutter@sun.com"
11
+ p.summary = "maven_gem is a command and RubyGems plugin for packaging Maven artifacts as gems."
12
+ p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
9
13
  p.developer('Charles Oliver Nutter', 'charles.nutter@sun.com')
10
14
  end
11
15
 
@@ -1,3 +1,3 @@
1
1
  class MavenGem
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
@@ -19,6 +19,50 @@ module MavenGem
19
19
  pom_doc = REXML::Document.new(Net::HTTP.get(uri))
20
20
  from_doc(pom_doc, options)
21
21
  end
22
+
23
+ # Unless the maven version string is a valid Gem version string create a substitute
24
+ # gem version string by dividing the maven version string into it's numeric elements
25
+ # and joining them back together with '.' characters.
26
+ #
27
+ # The string 'alpha' in a maven version string is converted to '0'.
28
+ # The string 'beta' in a maven version string is converted to '1'.
29
+ #
30
+ # In general gem versions strings need to either be an Integer or start with a
31
+ # digit and a '.'.
32
+ #
33
+ # For example the flying saucer core-renderer jar that uses itext to generate a
34
+ # pdf from styled xhtml input has a version string of "R8pre2".
35
+ #
36
+ # Installing this jar:
37
+ #
38
+ # jruby -S gem maven org/xhtmlrenderer core-renderer R8pre2
39
+ #
40
+ # results in:
41
+ #
42
+ # Successfully installed core-renderer-8.2-java
43
+ # 1 gem installed
44
+ #
45
+ # jruby -S gem list core-renderer
46
+ #
47
+ # *** LOCAL GEMS ***
48
+ #
49
+ # core-renderer (8.2)
50
+ #
51
+ # In addition the following constants are created in the new maven gem:
52
+ #
53
+ # CoreRenderer::VERSION # => "8.2"
54
+ # CoreRenderer::MAVEN_VERSION # => "R8pre2"
55
+ #
56
+ def self.maven_to_gem_version(maven_version)
57
+ maven_version = maven_version.gsub(/alpha/, '0')
58
+ maven_version = maven_version.gsub(/beta/, '1')
59
+ maven_numbers = maven_version.gsub(/\D+/, '.').split('.').find_all { |i| i.length > 0 }
60
+ if maven_numbers.empty?
61
+ '0.0.0'
62
+ else
63
+ maven_numbers.join('.')
64
+ end
65
+ end
22
66
 
23
67
  def self.from_doc(pom_doc, options = {})
24
68
  begin
@@ -29,6 +73,8 @@ module MavenGem
29
73
  artifact = nil
30
74
  group = nil
31
75
  version = nil
76
+ maven_version = nil
77
+ titleized_classname = nil
32
78
 
33
79
  puts "Processing POM" if options[:verbose]
34
80
  pom_doc.elements.each("/project/*") do |element|
@@ -36,11 +82,13 @@ module MavenGem
36
82
  when "artifactId"
37
83
  spec.name = element.text
38
84
  artifact = element.text
85
+ titleized_classname = artifact.chomp('.rb').split('-').collect { |e| e.capitalize }.join
39
86
  when "groupId"
40
87
  group = element.text
41
88
  when "version"
42
- spec.version = element.text
43
- version = element.text
89
+ maven_version = element.text
90
+ version = MavenGem::PomSpec.maven_to_gem_version(maven_version)
91
+ spec.version = version
44
92
  when "description"
45
93
  spec.description = element.text
46
94
  when "dependencies"
@@ -78,7 +126,11 @@ module MavenGem
78
126
  jar_contents = Net::HTTP.get(uri)
79
127
  File.open("#{gem_dir}/lib/#{jar_file}", 'w') {|f| f.write(jar_contents)}
80
128
 
81
- ruby_file_contents = <<END
129
+ ruby_file_contents = <<HEREDOC
130
+ module #{titleized_classname}
131
+ VERSION = '#{version}'
132
+ MAVEN_VERSION = '#{maven_version}'
133
+ end
82
134
  begin
83
135
  require 'java'
84
136
  require File.dirname(__FILE__) + '/#{jar_file}'
@@ -86,7 +138,7 @@ rescue LoadError
86
138
  puts 'JAR-based gems require JRuby to load. Please visit www.jruby.org.'
87
139
  raise
88
140
  end
89
- END
141
+ HEREDOC
90
142
  ruby_file = "#{gem_dir}/lib/#{artifact}.rb"
91
143
  puts "Writing #{ruby_file}" if options[:verbose]
92
144
  File.open(ruby_file, 'w') do |file|
@@ -133,4 +185,4 @@ if __FILE__ == $0
133
185
  else
134
186
  raise ArgumentError, "specify filename or URL on command line"
135
187
  end
136
- end
188
+ end
metadata CHANGED
@@ -9,20 +9,20 @@ email:
9
9
  - charles.nutter@sun.com
10
10
  cert_chain: []
11
11
 
12
- summary: MavenGem is a tool, library, and gem plugin to install any Maven-published
13
- Java library as though it were a gem.
12
+ summary: maven_gem is a command and RubyGems plugin for packaging Maven artifacts
13
+ as gems.
14
14
  post_install_message:
15
15
  extra_rdoc_files:
16
16
  - History.txt
17
17
  - Manifest.txt
18
18
  - README.txt
19
- homepage: http://www.jruby.org
19
+ homepage: http://github.com/jruby/maven_gem
20
20
  signing_key:
21
21
  name: maven_gem
22
22
  rdoc_options:
23
23
  - --main
24
24
  - README.txt
25
- rubyforge_project: jruby_extras
25
+ rubyforge_project: jruby-extras
26
26
  autorequire:
27
27
  licenses: []
28
28
 
@@ -54,17 +54,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
54
  version:
55
55
  extensions: []
56
56
 
57
- rubygems_version: 1.3.2
57
+ rubygems_version: 1.3.3
58
58
  requirements: []
59
59
 
60
60
  authors:
61
- - Charles Oliver Nutter
62
- date: 2009-04-17 05:00:00 +00:00
61
+ - charles.nutter@sun.comCharles Oliver Nutter
62
+ date: 2009-05-14 05:00:00 +00:00
63
63
  platform: ruby
64
64
  test_files:
65
65
  - test/test_maven_gem.rb
66
66
  version: !ruby/object:Gem::Version
67
- version: 0.0.1
67
+ version: 0.0.2
68
68
  require_paths:
69
69
  - lib
70
70
  dependencies: