package ShipIt::Step::FindVersion;
use strict;
use base 'ShipIt::Step';
use ShipIt::Util qw($term);
# return if okay, die if problems.
sub run {
my ($self, $state) = @_;
my $ver = $state->pt->current_version;
my $is_tagged = $state->vc->exists_tagged_version($ver);
print "Current version is: $ver\n";
my $def = "";
# if the current version isn't tagged, use that as the default. (they
# probably already ran shipit and bumped the version, but perhaps
# make dist or a test failed or something, so they're re-running it...)
$def = "[$ver] " unless $is_tagged;
my $newver = $term->readline("Next/release version? $def");
$newver ||= $ver;
# are they just compulsively running shipit? i.e., they just asked for same
# version as something tagged & no local diffs....
if ($is_tagged && $newver eq $ver && ! $state->vc->are_local_diffs) {
die "No local changes, and version on disk is already tagged. Nothing to do.\n";
}
# check to make sure they're not releasing a version that's already tagged
if ($state->vc->exists_tagged_version($newver)) {
die "Sorry, version '$newver' is already tagged. Stopping.\n";
}
$state->set_version($newver);
}
1;
syntax highlighted by Code2HTML, v. 0.9.1