Skip to content

Instantly share code, notes, and snippets.

@dagolden
Created March 17, 2010 02:41
Show Gist options
  • Save dagolden/334826 to your computer and use it in GitHub Desktop.
Save dagolden/334826 to your computer and use it in GitHub Desktop.
#!/usr/bin/env perl
use 5.010;
use strict;
use warnings;
sub bump_it {
my $version = shift || 0;
my $new_ver;
my $num_dots =()= $version =~ /(\.)/g;
my $has_v = $version =~ /^v/;
if ( $has_v || $num_dots > 1 ) { # vstring
$version =~ s{^v}{} if $has_v;
my @parts = split /\./, $version;
my @new_ver;
while ( @parts ) {
my $p = pop @parts;
if ( $p < 999 || ! @parts ) {
unshift @new_ver, $p+1;
last;
}
else {
unshift @new_ver, 0;
}
}
$new_ver = $has_v ? 'v' : '';
$new_ver .= join( ".", map { 0+$_ } @parts, @new_ver );
}
else { # decimal fraction
my ($fraction) = $version =~ m{\.(\d+)$};
my $n = defined $fraction ? length($fraction) : 0;
$new_ver = sprintf("%.${n}f",$version + (10**-$n));
}
}
while ( <> ) {
chomp;
say bump_it($_) . "\n";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment