Module-Release

 view release on metacpan or  search on metacpan

script/release  view on Meta::CPAN

	}
else {
	$opts{t} or $release->_print( "Skipping kwalitee checks. Shame on you!\n" );
	}

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# check MANIFEST. When we run 'make manifest' nothing should be
# added or removed from MANIFEST
unless( $opts{'m'} // $release->config->skip_manifest ) {
	$release->_print("============ Checking MANIFEST\n");
	$release->load_mixin('Module::Release::MANIFEST');
	$release->clean;
	$release->build_makefile;
	$release->make;
	$release->check_MANIFEST;
	}


# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# check source repository (but do not commit)
# This should happen after everything else because I like to use
# release as my testing tool before I checkin. It will test but
# not release if VCS is dirty.
$release->_print("============ Checking source repository\n");

$release->check_vcs;

my $Version;
if ($skip_dist) {
	$Version = "?"; # Get from ?
	}
else {
	$release->dist unless( $release->local_file and -e $release->local_file );
	$Version = eval { $release->dist_version } // 'error?';
	}

$release->_debug( "dist version is <$Version>\n" );

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# check anything signed by GPG
if( $release->config->gpg_signatures ) {
	$release->_print("============ Checking GPG signatures\n");
	$release->load_mixin('Module::Release::VerifyGPGSignature');
	$release->check_all_gpg_signatures;
	}


# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# test with a bunch of perls
unless( $opts{T} // $release->config->skip_tests ) {
	my $old_perl = $release->get_perl;

	my @perls = $release->perls;
	my ($n, $N) = (1, scalar @perls);
	PERL: foreach my $perl ( @perls ) {
		$release->_print("============ Testing with $perl (", $n++, "/$N)\n");
		$release->set_perl( $perl ) or next;

		$release->clean;

		foreach my $mod ( grep m/\S/ => split m/\s*,\s*/ => $required ) {
			system "$perl -M$mod -e1 >/dev/null 2>&1";
			if( $? ) {
				warn "Prereq $mod not available\n";
				next PERL;
				}
			}

		$release->build_makefile;
		$release->make;
		$release->test;

		unless( $skip_prereqs ) {
			$release->check_prereqs;
			}
		else {
			$opts{t} or $release->_print( "Skipping prereq checks. Shame on you!\n" );
			}

		unless( $skip_dist ) {
			$release->dist;
			$release->disttest;
			}
		}

	$release->set_perl( $old_perl );
	}


# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# exit if this is a dry run. Everything following this changes
# things or uploads. Don't leave anything behind.
if( $opts{t} // $release->config->dry_run ) {
	$release->_print("============ Cleaning up\n");
	$release->_print( "This is a dry run, so stopping. Cleaning up.\n" );
	$release->distclean;
	unlink glob( '*.tar *.tgz *.tar.gz *.tar.bz *.tar.bz2 *.tbz *.zip' );
	exit;
	}


# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# CPAN::Spec::Changes
$release->_print("============ Getting Changes\n");

unless( $opts{C} or $release->config->skip_changes ) {
	$release->show_recent_contributors;

	my $changes = "Changes";
	my $bak     = $changes . ".bak";

	die "Changes file does not exist!\n" unless -e $changes;

	my $str = $Version . ' ' . $release->get_release_date . "\n";

	my $message = do {
		if( defined $opts{'c'} ) {
			$opts{'c'}
			}
		else {
			$release->_print( "\n", "-" x 73, "\n", "Enter Changes section\n\n> " );



( run in 1.825 second using v1.01-cache-2.11-cpan-71847e10f99 )