| #!/usr/bin/ruby |
| |
| # This script is used to roll the version numbers of all modules up. |
| # The version number is always determined from the master POM's version number. |
| # However, when changing version number of the master POM, every module must have |
| # it's <parent>/<version> element updated. That's what this script is for. |
| |
| # Rub gems: Think of it as Maven for Ruby but not brain-damaged. See http://www.rubygems.org/read/book/1 |
| |
| require 'rubygems' |
| |
| # This script requires the Ruby gem hpricot ("gem install hpricot"). It was built with version 0.6. |
| # http://code.whytheluckystiff.net/hpricot |
| |
| require 'hpricot' |
| |
| # This script doesn't bother with optparse, it's just a single command line option: the new version number. |
| # Use with care! |
| |
| $version = ARGV[0] |
| |
| def read_pom(file) |
| open(file) do |f| |
| Hpricot.XML(f) |
| end |
| end |
| |
| def write(file, pom) |
| puts "Updating #{file} ..." |
| |
| File.open(file, "w") do |stream| |
| stream << pom |
| end |
| end |
| |
| def edit_pom(file) |
| pom = read_pom(file) |
| yield pom |
| write(file, pom) |
| end |
| |
| def process_module(mod_name) |
| |
| edit_pom("#{mod_name}/pom.xml") do |pom| |
| pom.at("/project/parent/version").inner_html = $version |
| end |
| end |
| |
| puts "Updating to version #{$version} ..." |
| |
| edit_pom("pom.xml") do |pom| |
| |
| modules = [] |
| |
| (pom/"project/modules/module").each { |elem| modules << elem.inner_html } |
| |
| modules.sort.each { |mod_name| process_module(mod_name) } |
| |
| pom.at("/project/version").inner_html = $version |
| end |
| |
| edit_pom("quickstart/src/main/resources/archetype-resources/pom.xml") do |pom| |
| pom.at("/project/properties/tapestry-release-version").inner_html = $version |
| end |