#!/usr/local/bin/perl ########################################### # verbump -- 2005, Mike Schilli ########################################### # PURPOSE ########################################### use strict; use warnings; use Pod::Usage; use Getopt::Std; use File::Find; use Sysadm::Install qw(:all); use Log::Log4perl qw(:easy); our $CVSVERSION = '$Revision: 1.7 $'; getopts("vhn", \my %o); my $level = $o{v} ? $DEBUG : $WARN; if($o{n}) { $level = $DEBUG; Sysadm::Install::dry_run(1) if $o{n}; } Log::Log4perl->easy_init($DEBUG); pod2usage({ verbose => 2}) if $o{h}; my $start_dir = shift; $start_dir ||= "."; my $version; my $newversion; my $done = 0; find(sub { return if $done; if(/^FreeBSD/ or /^blib/) { $File::Find::prune = 1; return; } return unless -f; return unless /\.pm$/; my $data = slurp($_); if($data =~ /^.*VERSION\s*=[\s"']*([\d\.]+).*$/m) { my $captured = $1; my $in = ask "$_: $& (Y/n)", "y"; if($in =~ /y/i) { $version = $captured; $newversion = incver($version); $in = ask "New Version", $newversion; if($in !~ /y/i) { $newversion = $in; } $data =~ s/(VERSION\s*=[\s"]*)([\d\.]+)/$1 . $newversion/e; blurt $data, $_; $done = 1; return; } print "Skipped ($in)\n"; } }, $start_dir); # Fix README cd $start_dir; sysrun("updreadme"); cdback; # Fix Changes cd $start_dir; my $data = slurp "Changes"; $data =~ s/^($version(\s+).*)/"$newversion$2" . nicedate() . "\n\n" . $1/me; blurt $data, "Changes"; cdback; # Fix META.yml cd $start_dir; $data = slurp "META.yml"; $data =~ s/^(version:\s*)$version/$1$newversion/m; blurt $data, "META.yml"; cdback; ######################################################### sub incver { ######################################################### return $_[0] + 0.01; } ######################################################### sub nicedate { ######################################################### my ($time) = @_; $time = time() unless defined $time; my ($sec,$min,$hour,$mday,$mon, $year,$wday,$yday,$isdst) = localtime($time); return sprintf "%d/%02d/%02d", $year+1900, $mon+1, $mday; } __END__ =head1 NAME verbump - Bump up the version number of a module distribution =head1 DOWNLOAD _SRC_HERE_ =head1 SYNOPSIS verbump [-vn] [start_dir] =head1 OPTIONS =over 8 =item B<-h> Prints this manual page in text format. =item B<-n> Dry run. Just print what would happen. Implies -v. =item B<-v> Verbose mode. =back =head1 DESCRIPTION C bumps up the version number of a CPAN module distribution. It modifies the main pm file, C, C, and runs C (available from perlmeister.com/scripts). =head1 EXAMPLES $ verbump Module-Rename =head1 LEGALESE Copyright 2005 by Mike Schilli, all rights reserved. This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =head1 AUTHOR 2005, Mike Schilli