Module: Baltix::Loader::Pom
- Included in:
- Source::Gem
- Defined in:
- lib/baltix/loader/pom.rb
Overview
POM xml based valid gemspec environment generation module example: “ovirt-engine-sdk” gem requires “xmllint” to work
Instance Method Summary collapse
Instance Method Details
#pom(propfile) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/baltix/loader/pom.rb', line 6 def pom propfile dir = File.dirname(propfile) specfile = Dir.glob(File.join(dir, '*.gemspec')).first re = /require.*?(?<version_file>[^"']+version[^"']*)/ version_line = Dir.glob(File.join(dir, '**', '*.rb')).map { |x| IO.read(x).split("\n").grep(re).first }.compact.first return nil if !version_line or !specfile version_file = re.match(version_line)[:version_file] re_V = /(?<klass>[^\"\'\(\s]+)::VERSION/ match = re_V.match(IO.read(specfile).split("\n").grep(re_V).first.to_s) if match klass = match[:klass] version = `xmllint pom.xml --xpath "/*[name()='project']/*[name()='version']/text()"`.strip if version != "" modtext = "module #{klass};VERSION = '#{version}';end" File.open(File.join(dir, "lib", version_file), "w+") {|f| f.puts(modtext) } end end rescue Errno::ENOENT end |