class Jars::MavenExec

def find_spec( allow_no_file )

def find_spec( allow_no_file )
  specs = Dir[ '*.gemspec' ]
  case specs.size
  when 0
    raise 'no gemspec found' unless allow_no_file
  when 1
    specs.first
  else
    raise 'more then one gemspec found. please specify a specfile' unless allow_no_file
  end
end

def initialize( spec = nil )

def initialize( spec = nil )
  @options = {}
  setup( spec )
rescue StandardError, LoadError => e
  # If spec load fails, skip looking for jar-dependencies
  warn "jar-dependencies: " + e.to_s
  warn e.backtrace.join( "\n" ) if Jars.verbose?
end

def resolve_dependencies_list( file )

def resolve_dependencies_list( file )
  factory = MavenFactory.new( @options )
  maven = factory.maven_new( File.expand_path( '../gemspec_pom.rb', __FILE__ ) )
  is_local_file = File.expand_path( File.dirname( @specfile ) ) == File.expand_path( Dir.pwd )
  maven.attach_jars( @spec, is_local_file )
  maven[ 'jars.specfile' ] = "#{@specfile}"
  maven[ 'outputAbsoluteArtifactFilename' ] = 'true'
  maven[ 'includeTypes' ] = 'jar'
  maven[ 'outputScope' ] = 'true'
  maven[ 'useRepositoryLayout' ] = 'true'
  maven[ 'outputDirectory' ] = "#{Jars.home}"
  maven[ 'outputFile' ] = "#{file}"
  maven.exec( 'dependency:copy-dependencies', 'dependency:list' )
end

def ruby_maven_install_options=( options )

def ruby_maven_install_options=( options )
  @options = options
end

def setup( spec = nil, allow_no_file = false )

def setup( spec = nil, allow_no_file = false )
  spec ||= find_spec( allow_no_file )
  case spec
  when String
    @specfile = File.expand_path( spec )
    @basedir = File.dirname( @specfile )
    Dir.chdir( @basedir ) do
      spec = eval( File.read( @specfile ), TOPLEVEL_BINDING, @specfile )
    end
  when Gem::Specification
    if File.exists?( spec.spec_file )
      @basedir = spec.gem_dir
      @specfile = spec.spec_file
    else
      # this happens with bundle and local gems
      # there the spec_file is "not installed" but inside
      # the gem_dir directory
      Dir.chdir( spec.gem_dir ) do
        setup( nil, true )
      end
    end
  when NilClass
  else
    raise 'spec must be either String or Gem::Specification'
  end
  @spec = spec
end