use strict;
use warnings FATAL => 'all';
use File::Find;
-use Getopt::Long qw(:config gnu_compat);
+use Getopt::Long qw(:config gnu_getopt);
use File::Temp ();
GetOptions(
"git" => \my $git,
+ "force" => \my $force,
) or die("Error in command line arguments\n");
my ($old_version, $bump) = @ARGV;
warn "Bumping $old_version -> $new_decimal\n";
+my $file_match = qr{^(?:
+ Makefile\.PL
+ |lib[/\\].*\.(?:pod|pm)
+ |bin[/\\].*
+ |script[/\\].*
+)$}x;
+
my %files;
if ($git) {
if (system "git diff --quiet --cached HEAD") {
for (`git ls-files`) {
chomp;
next
- unless /^lib\/.*\.(?:pod|pm)$/ || /^Makefile\.PL$/;
+ unless /$file_match/;
$files{$_} = `git show HEAD:"$_"`;
}
}
next
unless -f;
next
- unless /^lib\/.*\.(?:pod|pm)$/ || /^Makefile\.PL$/;
+ unless /(?:\.[\/\\])?$file_match/;
open my $fh, '<', $_
or die "can't open $_: $!";
$files{$_} = do { local $/; <$fh> };
close $fh;
},
- }, 'lib');
+ }, '.');
}
my $FILE_RE = qr{
(.*)$
}x;
my $MAKE_RE = qr{
- (^.* version \s* => \s* )
+ (^.* ['"]?version['"] \s* => \s* )
(['"]?) v?([0-9]+(?:[._][0-9]+)*) \2
( \s*, )
(?:
my $line = $lines[$ln];
if ($lines[$ln] =~ $re) {
die "unable to bump version number in $file from $old_version, found $3\n"
- if $3 ne $old_version;
+ if !$force && $3 ne $old_version;
my $comment = ($5 ? $5 . $new_vstring : '');
my $new_line = "$1'$new_decimal'$4$comment$6";
$file_diff .= <<"END_DIFF";