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