The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/local/bin/perl -w

use strict;

use Module::Husbandry qw( newpmdist parse_cli );

newpmdist parse_cli \@ARGV, {
    param_count => "1..",
    examples    => <<'END_EXAMPLES',
%p Foo-Bar    ## Create Foo-Bar and populate it
%p Foo::Bar   ## as above
END_EXAMPLES

    description  => <<'END_DESCRIPTION',
Creates a working directory for a standard Perl module using a set of
templates found in the ~/.newpm/skel directory.  Here's an example (all
but the first line are newpmdist's output):

    $ newpmdist Foo-Bar
    newpmdist$ mkdir -p Foo-Bar
    newpmdist$ chdir Foo-Bar
    newpmdist$ install Makefile.PL
    newpmdist$ install MANIFEST.SKIP
    newpmdist$ install CHANGES
    newpmdist$ install lib/Foo/Bar.pm
    newpmdist$ mkdir -p lib/Foo
    newpmdist$ install t/Foo-Bar.t
    newpmdist$ mkdir -p t
    newpmdist/usr/local/bin/perl Makefile
    Checking if your kit is complete...
    Looks good
    Writing Makefile for Foo::Bar
    newpmdist$ chdir ..

The contents of each of the installed files is exactly what's in that file
in the template directory with some simple macro substitutions done to
set things like file paths, package names, and copyright date.  Notice that
it doesn't install a MANIFEST?  It builds that as it goes (we hope to add
Module::Build support too, one day).

Let's explore the resulting directory tree:

    $ cd Foo-Bar
    $ find .
    .
    ./Makefile.PL
    ./MANIFEST
    ./MANIFEST.SKIP
    ./CHANGES
    ./lib
    ./lib/Foo
    ./lib/Foo/Bar.pm
    ./t
    ./t/Foo-Bar.t
    ./Makefile
    $ perl Makefile.PL
    Writing Makefile for Foo::Bar
    $ make distcheck
    /usr/local/bin/perl "-MExtUtils::Manifest=fullcheck" -e fullcheck
    $ make test
    cp lib/Foo/Bar.pm blib/lib/Foo/Bar.pm
    PERL_DL_NONLAZY=1 /usr/local/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
    t/Foo-Bar....ok                                                              
    All tests successful.
    Files=1, Tests=1,  0 wallclock secs ( 0.06 cusr +  0.00 csys =  0.06 CPU)

END_DESCRIPTION
};