diff --git a/tool/updatepoms.rb b/tool/updatepoms.rb new file mode 100644 index 00000000000..6ea45e82495 --- /dev/null +++ b/tool/updatepoms.rb @@ -0,0 +1,46 @@ +#!/usr/bin/env ruby +# +# Release utility script to update all version numbers in POMs. +# +# Usage: updatepoms.rb +# +class Pom + def initialize(filename) + @filename = filename + @lines = IO.readlines(filename) + end + + def update_version(version) + group = nil + artifact = nil + @lines.each do |line| + match = line.match(%r{([^<]+)}) + if match + group = match[1] + next + end + match = line.match(%r{([^<]+)}) + if match + artifact = match[1] + next + end + if line =~ %r{[0-9][^<]+} && group =~ /^org.jruby/ && artifact =~ /^(jruby|shared)/ + line.sub!(/([^<]+)<\/version>/, "#{version}") + end + end + end + + def save + File.open(@filename, 'w') {|f| @lines.each {|l| f << l } } + end +end + +Version = ARGV.shift or abort("#$0 takes one argument, the new version") + +dir = ARGV.shift || Dir.pwd +(Dir["#{dir}/**/pom.xml"]).each do |f| + puts "updating #{f}" + pom = Pom.new(f) + pom.update_version(Version) + pom.save +end