#!/usr/bin/tclsh # update version numbers in .info files for core packages. # set help_p 0 set verbose_p 0 set args $argv set packages { acs-lang acs-admin acs-api-browser acs-bootstrap-installer acs-content-repository acs-core-docs acs-kernel acs-mail acs-messaging notifications acs-reference acs-subsite acs-tcl acs-templating acs-service-contract search acs-automated-testing acs-authentication ref-timezones } if {![string match */packages [pwd]]} { puts stderr "FATAL: must be in the packages directory to run this script" exit } while {[llength $args] > 0} { set arg [lindex $args 0] set args [lrange $args 1 end] switch -glob -- $arg { --help* - -h {set help_p 1} --version { set version [string trim [lindex $args 0]] set args [lrange $args 1 end] if {![regexp {^5\.[0-9]+\.[0-9]+([ad][0-9]+)?$} $version]} { puts stderr "FATAL: illegal version $version" exit 1 } } --verbose - -v { set verbose_p 1 } } } if { $help_p } { puts stdout "Usage: rev --version VERNUM" exit } if { $verbose_p } { puts stdout "moving to version $version" } foreach package $packages { set file $package/$package.info if {![file exists $file]} { puts stderr "ABORTING: package .info file $file not found" exit 1 } if {[catch {set fp [open $file r+]} errMsg]} { puts stderr "ABORTING: package .info file $file could not be opened for reading and writing" exit 1 } # read the contents of the file. set new [read $fp] close $fp #--------------------------------------------------------------------- # here's what we're looking for #--------------------------------------------------------------------- # <version name="5.1.0d1" url="http:blahblah/acs-kernel-5.1.0d1.apm"> # <provides url="acs-kernel" version="5.1.0d1"/> #--------------------------------------------------------------------- # here's what we don't want to touch #--------------------------------------------------------------------- # <requires url="acs-kernel" version="5.0.0b4"/> #--------------------------------------------------------------------- regsub {(<version\s+name="[0-9][0-9.]+([ad][0-9]*)?"\s+url=")(.*)-[0-9][0-9.]+([ad][0-9]*)\.apm">} $new "<version name=\"$version\" url=\"\\3-${version}.apm\">" new regsub {(<provides\s+url="[^"]+"\s+version=")[0-9][0-9.]+([ad][0-9]*)?"} $new "\\1${version}\"" new # save the updated file. set fp [open ${file}.new w+] puts $fp $new close $fp } foreach package $packages { set file $package/$package.info if {$verbose_p} { puts stdout "renaming $file" } if {[catch {file rename $file $file.bak} errMsg]} { puts stderr "failed renaming file $file to $file.bak" exit 1 } else { if {[catch {file rename $file.new $file} errMsg]} { puts stderr "failed renaming file $file.new to $file, trying to rename .bak to $file" file rename $file.bak $file exit 1 } } }