App-Project-Doctor

 view release on metacpan or  search on metacpan

README.md  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;

# 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 )