ADAMK-Release
view release on metacpan or search on metacpan
lib/ADAMK/Release.pm view on Meta::CPAN
Devel::PPPort::WriteFile( $self->dist_ppport );
}
# Copy in author tests as needed
unless ( -f $self->dist_99_author ) {
foreach my $xt ( qw{ pod.t pmv.t } ) {
next if -f catfile( $self->dist_xt, $xt );
$self->copy(
catfile( $self->shared_dir, $xt ),
catfile( $self->dist_xt, $xt ),
);
}
}
# Create the README file
unless ( -f $self->dist_readme ) {
my $dist_readme = $self->dist_readme;
my $module_pod = -f $self->module_pod ? $self->module_pod : $self->module_pm;
$self->shell(
$self->bin_cat,
$module_pod,
"| pod2text >",
$dist_readme,
"Error while generating README file '$dist_readme'",
)
}
# Localise all newlines in text files
$self->file_localize->localize( $self->dist_dir );
# Check for various unsafe things in Makefile.PL
if ( $self->makefile_pl ) {
if ( $self->makefile_pl =~ /use inc::Module::Install/ ) {
if ( $self->makefile_pl =~ /\bauto_install\b/ ) {
$self->error("Makefile.PL contains dangerous auto_install");
}
} else {
unless ( $self->makefile_pl =~ /use strict/ ) {
$self->error("Makefile.PL does not use strict");
}
unless ( $self->makefile_pl =~ /(?:use|require) \d/ ) {
$self->error("Makefile.PL does not declare a minimum Perl version");
}
}
}
# Check file permissions
foreach my $file ( sort $self->find_0644->in( $self->dist_dir ) ) {
my $mode = (stat($file))[2] & 07777;
next if $mode == 0644;
$self->shell(
$self->bin_chmod,
'0644',
$file,
"Error setting $file to 0644 permissions",
);
}
# Make sure exe files are marked with executable permissions
if ( $self->find_executable->in( $self->dist_dir ) ) {
$self->error("Found at least one .exe file without -x unix permissions");
}
# Check the Changes file
unless ( $self->no_changes ) {
# Read in the Changes file
unless ( -f $self->dist_changes ) {
$self->error("Distribution does not have a Changes file");
}
unless ( open( CHANGES, $self->dist_changes ) ) {
$self->error("Failed to open Changes file");
}
my @lines = <CHANGES>;
close CHANGES;
unless ( @lines >= 3 ) {
$self->error("Changes file is empty or too small");
}
# The Changes version should be the first thing on the third line
my $current = $lines[2];
my ($version) = split /\s+/, $current;
unless ( $version =~ /[\d\._]{3}/ ) {
$self->error(
"Failed to find current version, or too short, in '%2'",
$current,
);
}
# Does it match the version in the main module
unless ( $version eq $self->dist_version ) {
$self->error(
"Version in Changes file (%s) does not match module version (%s)",
$version,
$self->dist_version,
);
}
}
# Check that the main module documentation Copyright is the current year
unless ( $self->no_copyright ) {
# Read the file
unless ( open( MODULE, $self->module_doc ) ) {
$self->error(
"Failed to open '%s'",
$self->module_doc,
);
}
my @lines = <MODULE>;
close MODULE;
# Look for the current year
my $year = 1900 + (localtime time)[5];
unless ( grep { /copyright/i and /$year/ } @lines ) {
$self->error("Missing Copyright, or does not refer to current year");
}
# Merge the module to a single string
my $merged = join "\n", @lines;
unless ( $self->no_rt ) {
my $dist_name = $self->dist;
unless ( $merged =~ /L\<http\:\/\/rt\.cpan\.org\/.+?=([\w-]+)\>/ ) {
( run in 1.578 second using v1.01-cache-2.11-cpan-39bf76dae61 )