jar-dependencies 0.3.9 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,59 +2,57 @@ require 'jars/maven_exec'
2
2
 
3
3
  module Jars
4
4
  class JarDetails < Array
5
-
6
5
  def scope
7
- self[ -2 ].to_sym
6
+ self[-2].to_sym
8
7
  end
9
8
 
10
9
  def file
11
- file = self[ -1 ].strip
10
+ file = self[-1].strip
12
11
  file.empty? ? path : file
13
12
  end
14
13
 
15
14
  def group_id
16
- self[ 0 ]
15
+ self[0]
17
16
  end
18
17
 
19
18
  def artifact_id
20
- self[ 1 ]
19
+ self[1]
21
20
  end
22
21
 
23
22
  def version
24
- self[ -3 ]
23
+ self[-3]
25
24
  end
26
25
 
27
26
  def classifier
28
- size == 5 ? nil : self[ 2 ]
27
+ size == 5 ? nil : self[2]
29
28
  end
30
29
 
31
30
  def gacv
32
- classifier ? self[ 0..3 ] : self[ 0..2 ]
31
+ classifier ? self[0..3] : self[0..2]
33
32
  end
34
33
 
35
34
  def path
36
35
  if scope == :system
37
36
  # replace maven like system properties embedded into the string
38
- self[ -1 ].gsub( /\$\{[a-zA-Z.]+\}/ ) do |a|
39
- ENV_JAVA[ a[2..-2] ] || a
37
+ self[-1].gsub(/\$\{[a-zA-Z.]+\}/) do |a|
38
+ ENV_JAVA[a[2..-2]] || a
40
39
  end
41
40
  else
42
- File.join( Jars.home, group_id.gsub(/[.]/, '/'), artifact_id, version, gacv[ 1..-1 ].join( '-' ) + '.jar' )
41
+ File.join(Jars.home, group_id.gsub(/[.]/, '/'), artifact_id, version, gacv[1..-1].join('-') + '.jar')
43
42
  end
44
43
  end
45
44
  end
46
45
 
47
46
  class Lock
48
-
49
- def initialize( file )
47
+ def initialize(file)
50
48
  @file = file
51
49
  end
52
50
 
53
- def process( scope )
51
+ def process(scope)
54
52
  scope ||= :runtime
55
- File.read( @file ).each_line do |line|
56
- next if not line =~ /:.+:/
57
- jar = JarDetails.new( line.strip.sub( /:jar:/, ':' ).sub( /:$/, ': ' ).split( /:/ ) )
53
+ File.read(@file).each_line do |line|
54
+ next if line !~ /:.+:/
55
+ jar = JarDetails.new(line.strip.sub(/:jar:/, ':').sub(/:$/, ': ').split(/:/))
58
56
  case scope
59
57
  when :all
60
58
  yield jar
@@ -66,7 +64,7 @@ module Jars
66
64
  yield jar if jar.scope == :provided
67
65
  when :runtime
68
66
  # jar.scope is maven scope
69
- yield jar if jar.scope != :test and jar.scope != :provided
67
+ yield jar if (jar.scope != :test) && (jar.scope != :provided)
70
68
  when :test
71
69
  yield jar
72
70
  end
@@ -6,24 +6,23 @@ require 'jars/gemspec_artifacts'
6
6
 
7
7
  module Jars
8
8
  class LockDown
9
-
10
9
  attr_reader :debug, :verbose
11
10
 
12
- def initialize( debug, verbose )
11
+ def initialize(debug, verbose)
13
12
  @debug = debug
14
13
  @verbose = verbose
15
14
  end
16
15
 
17
16
  def maven_new
18
- factory = MavenFactory.new( {}, @debug, @verbose )
19
- pom = File.expand_path( '../lock_down_pom.rb', __FILE__ )
20
- m = factory.maven_new( pom )
21
- m[ 'jruby.plugins.version' ] = Jars::JRUBY_PLUGINS_VERSION
22
- m[ 'dependency.plugin.version' ] = Jars::DEPENDENCY_PLUGIN_VERSION
23
- m[ 'jars.basedir' ] = File.expand_path( basedir )
24
- jarfile = File.expand_path( Jars.jarfile )
25
- m[ 'jars.jarfile' ] = jarfile if File.exists?( jarfile )
26
- attach_jar_coordinates_from_bundler_dependencies( m )
17
+ factory = MavenFactory.new({}, @debug, @verbose)
18
+ pom = File.expand_path('../lock_down_pom.rb', __FILE__)
19
+ m = factory.maven_new(pom)
20
+ m['jruby.plugins.version'] = Jars::JRUBY_PLUGINS_VERSION
21
+ m['dependency.plugin.version'] = Jars::DEPENDENCY_PLUGIN_VERSION
22
+ m['jars.basedir'] = File.expand_path(basedir)
23
+ jarfile = File.expand_path(Jars.jarfile)
24
+ m['jars.jarfile'] = jarfile if File.exist?(jarfile)
25
+ attach_jar_coordinates_from_bundler_dependencies(m)
27
26
  m
28
27
  end
29
28
  private :maven_new
@@ -33,28 +32,28 @@ module Jars
33
32
  end
34
33
 
35
34
  def basedir
36
- File.expand_path( '.' )
35
+ File.expand_path('.')
37
36
  end
38
37
 
39
- def attach_jar_coordinates_from_bundler_dependencies( maven )
38
+ def attach_jar_coordinates_from_bundler_dependencies(maven)
40
39
  load_path = $LOAD_PATH.dup
41
40
  require 'bundler'
42
- #TODO make this group a commandline option
43
- Bundler.setup( 'default' )
44
- maven.property( "jars.bundler", true )
41
+ # TODO: make this group a commandline option
42
+ Bundler.setup('default')
43
+ maven.property('jars.bundler', true)
45
44
  done = []
46
45
  index = 0
47
- cwd = File.expand_path( "." )
48
- Gem.loaded_specs.each do |name, spec|
46
+ cwd = File.expand_path('.')
47
+ Gem.loaded_specs.each do |_name, spec|
49
48
  # if gemspec is local then include all dependencies
50
- maven.attach_jars( spec, cwd == spec.full_gem_path )
49
+ maven.attach_jars(spec, cwd == spec.full_gem_path)
51
50
  end
52
51
  rescue Exception => e
53
52
  case e.class.to_s
54
53
  when 'LoadError'
55
54
  if Jars.verbose?
56
55
  warn e.message
57
- warn "no bundler found - ignore Gemfile if exists"
56
+ warn 'no bundler found - ignore Gemfile if exists'
58
57
  end
59
58
  when 'Bundler::GemfileNotFound'
60
59
  # do nothing then as we have bundler but no Gemfile
@@ -66,41 +65,41 @@ module Jars
66
65
  raise e
67
66
  end
68
67
  ensure
69
- $LOAD_PATH.replace( load_path )
68
+ $LOAD_PATH.replace(load_path)
70
69
  end
71
70
 
72
- def lock_down( options = {} )
73
- vendor_dir = File.expand_path( options[ :vendor_dir ] ) if options[ :vendor_dir ]
74
- out = File.expand_path( '.jars.output' )
75
- tree = File.expand_path( '.jars.tree' )
76
- maven.property( 'jars.outputFile', out )
77
- maven.property( 'maven.repo.local', Jars.local_maven_repo )
78
- maven.property( 'jars.home', vendor_dir ) if vendor_dir
79
- maven.property( 'jars.lock', File.expand_path( Jars.lock ) )
80
- maven.property( 'jars.force', options[ :force ] == true )
81
- maven.property( 'jars.update', options[ :update ] ) if options[ :update ]
71
+ def lock_down(options = {})
72
+ vendor_dir = File.expand_path(options[:vendor_dir]) if options[:vendor_dir]
73
+ out = File.expand_path('.jars.output')
74
+ tree = File.expand_path('.jars.tree')
75
+ maven.property('jars.outputFile', out)
76
+ maven.property('maven.repo.local', Jars.local_maven_repo)
77
+ maven.property('jars.home', vendor_dir) if vendor_dir
78
+ maven.property('jars.lock', File.expand_path(Jars.lock))
79
+ maven.property('jars.force', options[:force] == true)
80
+ maven.property('jars.update', options[:update]) if options[:update]
82
81
  # tell not to use Jars.lock as part of POM when running mvn
83
- maven.property( 'jars.skip.lock', true )
82
+ maven.property('jars.skip.lock', true)
84
83
 
85
- args = [ 'gem:jars-lock' ]
86
- if options[ :tree ]
87
- args += [ 'dependency:tree', '-P -gemfile.lock', '-DoutputFile=' + tree ]
84
+ args = ['gem:jars-lock']
85
+ if options[:tree]
86
+ args += ['dependency:tree', '-P -gemfile.lock', '-DoutputFile=' + tree]
88
87
  end
89
88
 
90
89
  puts
91
90
  puts '-- jar root dependencies --'
92
91
  puts
93
- status = maven.exec( *args )
92
+ status = maven.exec(*args)
94
93
  exit 1 unless status
95
- if File.exists?( tree )
94
+ if File.exist?(tree)
96
95
  puts
97
96
  puts '-- jar dependency tree --'
98
97
  puts
99
- puts File.read( tree )
98
+ puts File.read(tree)
100
99
  puts
101
100
  end
102
101
  puts
103
- puts File.read( out ).gsub( /#{File.dirname(out)}\//, '' )
102
+ puts File.read(out).gsub(/#{File.dirname(out)}\//, '')
104
103
  puts
105
104
  ensure
106
105
  FileUtils.rm_f out
@@ -1,27 +1,30 @@
1
1
  # this file is maven DSL and used by maven via jars/lock_down.rb
2
2
 
3
- basedir( ENV_JAVA[ "jars.basedir" ] )
3
+ basedir(ENV_JAVA['jars.basedir'])
4
4
 
5
- eval( File.read( File.join( File.dirname(__FILE__), 'attach_jars_pom.rb' ) ) )
5
+ eval(File.read(File.join(File.dirname(__FILE__), 'attach_jars_pom.rb')))
6
6
 
7
- jfile = ENV_JAVA[ "jars.jarfile" ]
8
- jarfile( jfile ) if jfile
7
+ jfile = ENV_JAVA['jars.jarfile']
8
+ jarfile(jfile) if jfile
9
9
 
10
10
  # need to fix the version of this plugin for gem:jars_lock goal
11
- jruby_plugin :gem, ENV_JAVA[ "jruby.plugins.version" ]
12
-
11
+ jruby_plugin :gem, ENV_JAVA['jruby.plugins.version']
13
12
 
14
13
  # if you use bundler we collect all root jar dependencies
15
14
  # from each gemspec file. otherwise we need to resolve
16
15
  # the gemspec artifact in the maven way
17
- unless ENV_JAVA[ "jars.bundler" ]
16
+ unless ENV_JAVA['jars.bundler']
18
17
 
19
- gemspec rescue nil
18
+ begin
19
+ gemspec
20
+ rescue
21
+ nil
22
+ end
20
23
 
21
24
  end
22
25
 
23
- properties( 'project.build.sourceEncoding' => 'utf-8' )
26
+ properties('project.build.sourceEncoding' => 'utf-8')
24
27
 
25
- plugin :dependency, ENV_JAVA[ "dependency.plugin.version" ]
28
+ plugin :dependency, ENV_JAVA['dependency.plugin.version']
26
29
 
27
- eval( File.read( File.join( File.dirname(__FILE__), 'output_jars_pom.rb' ) ) )
30
+ eval(File.read(File.join(File.dirname(__FILE__), 'output_jars_pom.rb')))
@@ -3,9 +3,8 @@ require 'jars/maven_factory'
3
3
 
4
4
  module Jars
5
5
  class MavenExec
6
-
7
- def find_spec( allow_no_file )
8
- specs = Dir[ '*.gemspec' ]
6
+ def find_spec(allow_no_file)
7
+ specs = Dir['*.gemspec']
9
8
  case specs.size
10
9
  when 0
11
10
  raise 'no gemspec found' unless allow_no_file
@@ -19,64 +18,65 @@ module Jars
19
18
 
20
19
  attr_reader :basedir, :spec, :specfile
21
20
 
22
- def initialize( spec = nil )
21
+ def initialize(spec = nil)
23
22
  @options = {}
24
- setup( spec )
23
+ setup(spec)
25
24
  rescue StandardError, LoadError => e
26
25
  # If spec load fails, skip looking for jar-dependencies
27
- warn "jar-dependencies: " + e.to_s
28
- warn e.backtrace.join( "\n" ) if Jars.verbose?
26
+ warn 'jar-dependencies: ' + e.to_s
27
+ warn e.backtrace.join("\n") if Jars.verbose?
29
28
  end
30
29
 
31
- def setup( spec = nil, allow_no_file = false )
32
- spec ||= find_spec( allow_no_file )
30
+ def setup(spec = nil, allow_no_file = false)
31
+ spec ||= find_spec(allow_no_file)
33
32
 
34
33
  case spec
35
34
  when String
36
- @specfile = File.expand_path( spec )
37
- @basedir = File.dirname( @specfile )
38
- Dir.chdir( @basedir ) do
39
- spec = eval( File.read( @specfile ), TOPLEVEL_BINDING, @specfile )
35
+ @specfile = File.expand_path(spec)
36
+ @basedir = File.dirname(@specfile)
37
+ Dir.chdir(@basedir) do
38
+ spec = eval(File.read(@specfile), TOPLEVEL_BINDING, @specfile)
40
39
  end
41
40
  when Gem::Specification
42
- if File.exists?( spec.spec_file )
41
+ if File.exist?(spec.loaded_from)
43
42
  @basedir = spec.gem_dir
44
- @specfile = spec.spec_file
43
+ @specfile = spec.loaded_from
45
44
  else
46
45
  # this happens with bundle and local gems
47
46
  # there the spec_file is "not installed" but inside
48
47
  # the gem_dir directory
49
- Dir.chdir( spec.gem_dir ) do
50
- setup( nil, true )
48
+ Dir.chdir(spec.gem_dir) do
49
+ setup(nil, true)
51
50
  end
52
51
  end
53
52
  when NilClass
54
53
  else
55
- raise 'spec must be either String or Gem::Specification'
54
+ Jars.debug('spec must be either String or Gem::Specification. ' +
55
+ 'File an issue on github if you need it.')
56
56
  end
57
57
  @spec = spec
58
58
  end
59
59
 
60
- def ruby_maven_install_options=( options )
60
+ def ruby_maven_install_options=(options)
61
61
  @options = options
62
62
  end
63
63
 
64
- def resolve_dependencies_list( file )
65
- factory = MavenFactory.new( @options )
66
- maven = factory.maven_new( File.expand_path( '../gemspec_pom.rb', __FILE__ ) )
64
+ def resolve_dependencies_list(file)
65
+ factory = MavenFactory.new(@options)
66
+ maven = factory.maven_new(File.expand_path('../gemspec_pom.rb', __FILE__))
67
67
 
68
- is_local_file = File.expand_path( File.dirname( @specfile ) ) == File.expand_path( Dir.pwd )
69
- maven.attach_jars( @spec, is_local_file )
68
+ is_local_file = File.expand_path(File.dirname(@specfile)) == File.expand_path(Dir.pwd)
69
+ maven.attach_jars(@spec, is_local_file)
70
70
 
71
- maven[ 'jars.specfile' ] = "#{@specfile}"
72
- maven[ 'outputAbsoluteArtifactFilename' ] = 'true'
73
- maven[ 'includeTypes' ] = 'jar'
74
- maven[ 'outputScope' ] = 'true'
75
- maven[ 'useRepositoryLayout' ] = 'true'
76
- maven[ 'outputDirectory' ] = "#{Jars.home}"
77
- maven[ 'outputFile' ] = "#{file}"
71
+ maven['jars.specfile'] = @specfile.to_s
72
+ maven['outputAbsoluteArtifactFilename'] = 'true'
73
+ maven['includeTypes'] = 'jar'
74
+ maven['outputScope'] = 'true'
75
+ maven['useRepositoryLayout'] = 'true'
76
+ maven['outputDirectory'] = Jars.home.to_s
77
+ maven['outputFile'] = file.to_s
78
78
 
79
- maven.exec( 'dependency:copy-dependencies', 'dependency:list' )
79
+ maven.exec('dependency:copy-dependencies', 'dependency:list')
80
80
  end
81
81
  end
82
82
  end
@@ -3,78 +3,71 @@ require 'jars/gemspec_artifacts'
3
3
 
4
4
  module Jars
5
5
  class MavenFactory
6
-
7
6
  module AttachJars
8
-
9
- def attach_jars( spec, all_dependencies = false )
7
+ def attach_jars(spec, all_dependencies = false)
10
8
  @index ||= 0
11
9
  @done ||= []
12
10
 
13
- deps = GemspecArtifacts.new( spec )
11
+ deps = GemspecArtifacts.new(spec)
14
12
  deps.artifacts.each do |a|
15
13
  # for this gemspec we want to include all artifacts but
16
14
  # for all others we want to exclude provided and test artifacts
17
- if !@done.include?( a.key ) and (all_dependencies or (a.scope != 'provided' and a.scope != 'test'))
18
-
19
- # ruby dsl is not working reliably for classifier
20
- self[ "jars.#{@index}" ] = a.to_coord_no_classifier
21
- if a.exclusions
22
- jndex = 0
23
- a.exclusions.each do |ex|
24
- self[ "jars.#{@index}.exclusions.#{jndex}" ] = ex.to_s
25
- jndex += 1
26
- end
15
+ next unless !@done.include?(a.key) && (all_dependencies || ((a.scope != 'provided') && (a.scope != 'test')))
16
+
17
+ # ruby dsl is not working reliably for classifier
18
+ self["jars.#{@index}"] = a.to_coord_no_classifier
19
+ if a.exclusions
20
+ jndex = 0
21
+ a.exclusions.each do |ex|
22
+ self["jars.#{@index}.exclusions.#{jndex}"] = ex.to_s
23
+ jndex += 1
27
24
  end
28
- self[ "jars.#{@index}.scope" ] = a.scope if a.scope
29
- if a.classifier
30
- self[ "jars.#{@index}.classifier" ] = a.classifier
31
- end
32
- @index += 1
33
- @done << a.key
34
25
  end
26
+ self["jars.#{@index}.scope"] = a.scope if a.scope
27
+ self["jars.#{@index}.classifier"] = a.classifier if a.classifier
28
+ @index += 1
29
+ @done << a.key
35
30
  end
36
31
  end
37
32
  end
38
33
 
39
34
  attr_reader :debug, :verbose
40
35
 
41
- def initialize( options = nil, debug = Jars.debug?, verbose = Jars.verbose? )
36
+ def initialize(options = nil, debug = Jars.debug?, verbose = Jars.verbose?)
42
37
  @options = (options || {}).dup
43
- @options.delete( :ignore_dependencies )
38
+ @options.delete(:ignore_dependencies)
44
39
  @debug = debug
45
40
  @verbose = verbose
46
41
  @installed_maven = false
47
42
  end
48
43
 
49
- def maven_new( pom )
44
+ def maven_new(pom)
50
45
  lazy_load_maven
51
- maven = setup( Maven::Ruby::Maven.new )
46
+ maven = setup(Maven::Ruby::Maven.new)
52
47
 
53
48
  maven.extend AttachJars
54
- # TODO copy pom to tmp dir in case it is not a real file
55
- maven.options[ '-f' ] = pom
49
+ # TODO: copy pom to tmp dir in case it is not a real file
50
+ maven.options['-f'] = pom
56
51
  maven
57
52
  end
58
53
 
59
54
  private
60
55
 
61
- def setup( maven )
56
+ def setup(maven)
62
57
  maven.verbose = @verbose
63
- if @debug
64
- maven.options[ '-X' ] = nil
65
- end
58
+ maven.options['-X'] = nil if @debug
66
59
  if @verbose
67
- maven.options[ '-e' ] = nil
68
- elsif not @debug
69
- maven.options[ '--quiet' ] = nil
60
+ maven.options['-e'] = nil
61
+ elsif !@debug
62
+ maven.options['--quiet'] = nil
70
63
  end
71
- maven[ 'verbose' ] = (@debug || @verbose) == true
64
+ maven['verbose'] = (@debug || @verbose) == true
72
65
 
73
66
  if Jars.maven_settings
74
- maven.options[ '-s' ] = Jars::MavenSettings.effective_settings
67
+ maven.options['-s'] = Jars::MavenSettings.effective_settings
75
68
  end
76
69
 
77
- maven[ 'maven.repo.local' ] = "#{java.io.File.new( Jars.local_maven_repo ).absolute_path}"
70
+ maven['maven.repo.local'] = java.io.File.new(Jars.local_maven_repo).absolute_path.to_s
78
71
 
79
72
  maven
80
73
  end
@@ -82,8 +75,8 @@ module Jars
82
75
  private
83
76
 
84
77
  def lazy_load_maven
85
- add_gem_to_load_path( 'ruby-maven' )
86
- add_gem_to_load_path( 'ruby-maven-libs' )
78
+ add_gem_to_load_path('ruby-maven')
79
+ add_gem_to_load_path('ruby-maven-libs')
87
80
  if @installed_maven
88
81
  puts
89
82
  puts 'using maven for the first time results in maven'
@@ -95,44 +88,44 @@ module Jars
95
88
  require 'maven/ruby/maven'
96
89
  end
97
90
 
98
- def find_spec_via_rubygems( name, req )
91
+ def find_spec_via_rubygems(name, req)
99
92
  require 'rubygems/dependency'
100
- dep = Gem::Dependency.new( name, req )
101
- dep.matching_specs( true ).last
93
+ dep = Gem::Dependency.new(name, req)
94
+ dep.matching_specs(true).last
102
95
  end
103
96
 
104
- def add_gem_to_load_path( name )
97
+ def add_gem_to_load_path(name)
105
98
  # if the gem is already activated => good
106
- return if Gem.loaded_specs[ name ]
99
+ return if Gem.loaded_specs[name]
107
100
  # just install gem if needed and add it to the load_path
108
101
  # and leave activated gems as they are
109
- req = requirement( name )
110
- unless spec = find_spec_via_rubygems( name, req )
111
- spec = install_gem( name, req )
102
+ req = requirement(name)
103
+ unless spec = find_spec_via_rubygems(name, req)
104
+ spec = install_gem(name, req)
112
105
  end
113
106
  unless spec
114
107
  raise "failed to resolve gem '#{name}' if you're using Bundler add it as a dependency"
115
108
  end
116
- path = File.join( spec.full_gem_path, spec.require_path )
117
- $LOAD_PATH << path unless $LOAD_PATH.include?( path )
109
+ path = File.join(spec.full_gem_path, spec.require_path)
110
+ $LOAD_PATH << path unless $LOAD_PATH.include?(path)
118
111
  end
119
112
 
120
- def requirement( name )
121
- jars = Gem.loaded_specs[ 'jar-dependencies' ]
113
+ def requirement(name)
114
+ jars = Gem.loaded_specs['jar-dependencies']
122
115
  dep = jars.nil? ? nil : jars.dependencies.detect { |d| d.name == name }
123
- dep.nil? ? Gem::Requirement.create( '>0' ) : dep.requirement
116
+ dep.nil? ? Gem::Requirement.create('>0') : dep.requirement
124
117
  end
125
118
 
126
- def install_gem( name, req )
119
+ def install_gem(name, req)
127
120
  @installed_maven = true
128
121
  puts "Installing gem '#{name}' . . ."
129
122
  require 'rubygems/dependency_installer'
130
- inst = Gem::DependencyInstaller.new( @options ||= {} )
131
- inst.install( name, req ).first
123
+ inst = Gem::DependencyInstaller.new(@options ||= {})
124
+ inst.install(name, req).first
132
125
  rescue => e
133
126
  if Jars.verbose?
134
- warn "#{e.inspect}"
135
- warn e.backtrace.join( "\n" )
127
+ warn e.inspect.to_s
128
+ warn e.backtrace.join("\n")
136
129
  end
137
130
  raise "there was an error installing '#{name} (#{req})' #{@options[:domain]}. please install it manually: #{e.inspect}"
138
131
  end