App-Project-Doctor
view release on metacpan or search on metacpan
my $doctor = App::Project::Doctor->new(path => '/path/to/my-dist');
my $report = $doctor->run;
print $report->render_text;
exit $report->exit_code;
# DESCRIPTION
Orchestrates a suite of diagnostic checks against a Perl CPAN distribution,
combining [App::Workflow::Lint](https://metacpan.org/pod/App%3A%3AWorkflow%3A%3ALint), [App::GHGen::Generator](https://metacpan.org/pod/App%3A%3AGHGen%3A%3AGenerator), [App::makefilepl2cpanfile](https://metacpan.org/pod/App%3A%3Amakefilepl2cpanfile)
into a single interactive pre-upload tool.
Each enabled `App::Project::Doctor::Check::*` plugin receives an
[App::Project::Doctor::Context](https://metacpan.org/pod/App%3A%3AProject%3A%3ADoctor%3A%3AContext) and returns a list of
[App::Project::Doctor::Finding](https://metacpan.org/pod/App%3A%3AProject%3A%3ADoctor%3A%3AFinding) objects which are collected into an
[App::Project::Doctor::Report](https://metacpan.org/pod/App%3A%3AProject%3A%3ADoctor%3A%3AReport).
# CONSTRUCTOR
## new( %args )
lib/App/Project/Doctor.pm view on Meta::CPAN
my $doctor = App::Project::Doctor->new(path => '/path/to/my-dist');
my $report = $doctor->run;
print $report->render_text;
exit $report->exit_code;
=head1 DESCRIPTION
Orchestrates a suite of diagnostic checks against a Perl CPAN distribution,
combining L<App::Workflow::Lint>, L<App::GHGen::Generator>, L<App::makefilepl2cpanfile>
into a single interactive pre-upload tool.
Each enabled C<App::Project::Doctor::Check::*> plugin receives an
L<App::Project::Doctor::Context> and returns a list of
L<App::Project::Doctor::Finding> objects which are collected into an
L<App::Project::Doctor::Report>.
=head1 CONSTRUCTOR
=head2 new( %args )
lib/App/Project/Doctor/Check/CpanReadiness.pm view on Meta::CPAN
}
return undef;
}
1;
__END__
=head1 NAME
App::Project::Doctor::Check::CpanReadiness - Pre-upload CPAN readiness check
=head1 DESCRIPTION
Performs a final pre-flight sweep: version format, C<Changes>, C<MANIFEST>,
README presence, and basic C<Changes> content.
For the README requirement any of the following file names is accepted:
C<README>, C<README.md>, C<README.pod>, C<README.rst>, C<README.txt>.
An error is only raised when B<none> of these exist.
script/project-doctor view on Meta::CPAN
#!/usr/bin/env perl
# project-doctor: pre-release health check for Perl CPAN distributions.
# Run this before every cpan-upload to catch common problems automatically.
# It checks Tests, CI, META, POD, Dependencies, Licensing, GitHub Actions,
# Security, and CPAN Readiness, then offers interactive automated fixes.
use strict;
use warnings;
use autodie qw(:all);
# croak gives clean error messages that point at this script, not at internals.
use Carp qw(croak);
# File::Spec is used to format the "Checking /path/to/dist ..." banner line.
script/project-doctor view on Meta::CPAN
--verbose, -v Show per-finding detail for all checks
--quiet, -q Suppress banner and passing checks
--help, -h Show this help
--man Show full manual page
=head1 DESCRIPTION
Runs a suite of diagnostics against a Perl CPAN distribution and reports
on tests, CI configuration, META validity, POD coverage, dependency
declarations, licensing, GitHub Actions workflows, security hygiene, and
CPAN upload readiness.
Fixable issues are listed at the end; the user is prompted (or fixes are
applied automatically with C<--fix>).
=head1 EXAMPLES
# Check the current directory
project-doctor
# Check a specific distribution
( run in 1.983 second using v1.01-cache-2.11-cpan-b16cb0d3907 )