die "Cannot find version in VERSION.\n";
}
- if ($version =~ /(\d+)\.(\d+)/) {
+ if ($version =~ /^(\d+)\.(\d+)$/) {
my $major = $1;
my $minor = $2;
$minor--;
return "$major.$minor";
+ } elsif ($version =~ /^(\d+)\.(\d+)\.(\d+)$/) {
+ my $major = $1;
+ my $middle = $2;
+ my $minor = $3;
+
+ if ($minor == 0) {
+ die "Can\'t calculate preceding from $version.\n";
+ } else {
+ $minor--;
+ }
+
+ return "$major.$middle.$minor";
} else {
return $version;
}
read (F, $_, -s 'VERSION');
close (F);
-if (/^(.*name=.VERSION.>)(\d+)\.(\d+)\+?(<.*)$/s) {
+if (/^(.*name=.VERSION.>)([\.\d]+)\+?(<.*)$/s) {
# ok
-} elsif (/^(.*?)(\d+)\.(\d+)\+?(.*)$/s) {
+} elsif (/^(.*?)([\.\d]+)\+?(.*)$/s) {
# ok
} else {
die "Cannot find version in VERSION.\n";
}
my $pre = $1;
-my $major = $2;
-my $minor = $3;
-my $post = $4;
-
-$minor++;
+my $fvers = $2;
+my $post = $3;
+
+my $major = undef;
+my $middle = undef;
+my $minor = undef;
+
+if ($fvers =~ /^(\d+)\.(\d+)\.(\d+)$/) {
+ $major = $1;
+ $middle = $2;
+ $minor = $3;
+ $minor++;
+ $fvers = "$major.$middle.$minor";
+} elsif ($fvers =~ /^(\d+)\.(\d+)$/) {
+ $major = $1;
+ $minor = $2;
+ $minor++;
+ $fvers = "$major.$minor";
+} else {
+ die "Cannot parse version: $fvers\n";
+}
-$version = "$major.$minor" if !$version;
+$version = "$fvers" if !$version;
print "About to release $version; are you sure? ";
chop($_ = scalar(<>));