class Maven::Tools::POM

Public Class Methods

new( file = nil, snapshot = false ) click to toggle source
# File lib/maven/tools/pom.rb, line 61
def initialize( file = nil, snapshot = false )
  if file.is_a? Gem::Specification
    eval_spec( file, snapshot )
  else
    eval_file( file )
  end
end

Public Instance Methods

eval_file( file ) click to toggle source
# File lib/maven/tools/pom.rb, line 38
def eval_file( file )
  if file && ::File.directory?( file )
    dir = file
    file = nil
  else
    dir = '.'
  end

  unless file
    file = pom_file( 'pom.rb', dir )
    file ||= pom_file( 'Mavenfile', dir )
    file ||= pom_file( 'Gemfile', dir )
    #file ||= pom_file( 'Jarfile', dir )
    file ||= pom_file( '*.gemspec', dir )
  end

  if file
    FileUtils.cd( dir ) do
      @model = to_model( ::File.basename( file ) )
    end
  end
end
eval_spec( s, snapshot ) click to toggle source
# File lib/maven/tools/pom.rb, line 32
def eval_spec( s, snapshot )
  @model = tesla do
    gemspec s, :snapshot => snapshot, :no_rubygems_repo => true
  end
end
pom_file( pom, dir = '.' ) click to toggle source
# File lib/maven/tools/pom.rb, line 69
def pom_file( pom, dir = '.' )
  files = Dir[ ::File.join( dir, pom ) ]
  case files.size
  when 0
  when 1
    files.first
  else
    warn 'more than one pom file found'
  end
end
to_file( file ) click to toggle source
# File lib/maven/tools/pom.rb, line 89
def to_file( file )
  if @model
    v = ::Maven::Tools::Visitor.new( ::File.open( file, 'w' ) )
    v.accept_project( @model )
    true
  end
end
to_model( file ) click to toggle source
# File lib/maven/tools/pom.rb, line 97
def to_model( file )
  if ::File.exists?( file )
    case file
    when /pom.rb/
      eval_pom( "tesla do\n#{ ::File.read( file ) }\nend", file )
    when /(Maven|Gem|Jar)file/
      eval_pom( "tesla do\n#{ ::File.read( file ) }\nend", file )
    when /.+\.gemspec/
      eval_pom( "tesla do\ngemspec( '#{ ::File.basename( file ) }' )\nend", file )
    end
  else
    eval_pom( "tesla do\n#{file}\nend", nil )
  end
rescue ArgumentError => e
  warn 'fallback to old maven model'
  puts e.message
  puts e.backtrace.join("\n\t")
  raise 'TODO old maven model'
end
to_s() click to toggle source
# File lib/maven/tools/pom.rb, line 80
def to_s
  if @model
    io = String.new
    v = ::Maven::Tools::Visitor.new( io )
    v.accept_project( @model )
    io
  end
end