4 use warnings FATAL => 'all';
9 my $dotted = $version =~ s/^v//;
10 my @parts = split /\./, $version;
11 if (!$dotted && @parts == 2) {
14 push @parts, $dec =~ /(\d{1,3})/g;
22 my $old_version = shift;
24 my %bump_part = (major => 0, minor => 1, bugfix => 2);
25 my $bump_this = $bump_part{$ARGV[0]||'bugfix'};
30 if (defined $bump_this) {
31 my @new_parts = version_parts($old_version);
32 $new_parts[$bump_this]++;
33 $new_parts[$_] = 0 for ($bump_this+1 .. $#new_parts);
34 $new_vstring = join('.', @new_parts);
35 my $alpha_pos = index($old_version, '_');
36 my $format = '%i.' . ( '%03i' x (@new_parts - 1) );
37 $new_decimal = sprintf($format, @new_parts);
38 substr $new_decimal, $alpha_pos, 0, '_'
41 elsif ($ARGV[0] =~ /^v?[0-9]+(?:[._][0-9]+)*$/) {
42 $new_decimal = $ARGV[0];
43 $new_vstring = join('.', version_parts($new_decimal));
46 die "no idea which part to bump - $ARGV[0] means nothing to me"
49 warn "Bumping $old_version -> $new_decimal\n";
56 unless -f && /\.pod$|\.pm$/;
58 open my $fh, '<', $file
59 or die "can't open $file: $!";
60 my $content = do { local $/; <$fh> };
64 ( \$VERSION \s* = \s* )
65 (['"]?) v?([0-9]+(?:[._][0-9]+)*) \2
72 die "unable to bump version number in $file from $old_version, found $3\n"
73 if $3 ne $old_version;
74 $1 . "'" . $new_decimal . "'" . $4 . ($5 ? $5 . $new_vstring : '')
78 $files{$file} = $content;
83 my $file = 'Makefile.PL';
84 open my $fh, '<', $file
85 or die "can't open $file: $!";
86 my $content = do { local $/; <$fh> };
90 ( version \s* => \s* )
91 (['"]?) v?([0-9]+(?:[._][0-9]+)*) \2
98 die "unable to bump version number in $file from $old_version, found $3\n"
99 if $3 ne $old_version;
100 $1 . "'" . $new_decimal . "'" . $4 . ($5 ? $5 . $new_vstring : '')
104 $files{$file} = $content;
107 for my $file (sort keys %files) {
108 warn " updating $file\n";
109 open my $fh, '>', $file
110 or die "can't open $file: $!";
111 print { $fh } $files{$file};