distmgr - Create, integrate, release a Perl distribution to the CPAN, and prepare for the next development cycle.

Coverage Status


Performs a full suite of automated creation, addition, pre-release, release and post release tasks for Perl distributions. It integrates with VCS, automates the configuration of Continuous Integration, manages version numbers and Changes files, amongst a slew of other tasks.

This distmgr application uses the Dist::Mgr library as its backend.

See the README for full details beyond this document.


    distmgr <command> [OPTIONS]


Command Process Flows

Notice: Be sure to read the Command Process Flows documentation in the README so you understand what is happening, why its happening, and when it happens.


Creates a full blown, brand new distribution with everything included.


    -m | --module    Mandatory: The module name (eg. Test::Module)
    -a | --author    Mandatory: The name of the author (eg. "Steve Bertrand")
    -e | --email     Mandatory: The email address of the author
    -u | --user      Optional:  The Github username (eg. stevieb9)
    -r | --repo      Optional:  The Github repository name (eg. test-module)
    -w | --wait      Optional:  Wait for CI test results (--nowait to disable)
    -V | --verbose   Optional:  Display verbose output for each process

Note: For Git integration, create an empty repository on Github, then supply the short name of the repository with --repo and your Github username with --user and we'll clone the new repo and use it as the top-level distribution directory.

Note: We will skip adding repository information, skip adding CI badge info, and skip adding repository and bugtracker information to Makefile.PL file if --user or --repo are not present in the parameter list (see "install").


Creates a bare-bones distribution with just the basics. There will be no git integration, no CI integration etc. Pretty well nearly a stock Module::Starter distribution with a few small tweaks.


    -m | --module   Mandatory: The module name (eg. Test::Module)
    -a | --author   Mandatory: The name of the author (eg. "Steve Bertrand")
    -e | --email    Mandatory: The email address of the author
    -V | --verbose  Optional:  (Flag) Display verbose output for each process


Installs/adds various files or file sections into an existing distribution that you author.


All of the below options are flags, and don't take any arguments.

    -g | --gitignore    Install .gitignore file
    -c | --ci           Install Github Actions CI configuration file
    -B | --badges       Insert CI/Coverage badges links into the module's POD
    -b | --bugtracker   Insert bugtracker information into Makefile.PL
    -R | --repository   Insert repository information into Makefile.PL
    -A | --all          Insert/Install all above options

Note: For badges, bugtracker and repository, the --user (Github username) and --repo (Github repository) arguments must be supplied.


Prepares for, tests, runs Continuous Integration testing, commits, tags, pushes and releases to the CPAN your distribution.


    -i | --cpanid   Optional:  Your PAUSE userid
    -p | --cpanpw   Optional:  Your PAUSE userid's password
    -d | --dryrun   Optional:  (Flag) Don't actually upload to the CPAN

Note: No Git operations will be performed without --repo and --user. If the --cpanid or --cpanpw aren't available or the CPAN_USERNAME or CPAN_PASSWORD environment variables aren't set, we won't upload to the CPAN.


After "release", this command will bump version numbers in all of your modules, and prepare the Changes file for your next development cycle.


    -V | --verbose  Optional:  Display verbose output for each process


config - Creates an initial default configuration file.

This file will be named dist-mgr.json and will be placed in your HOME directory on Unix systems, and in your USERPROFILE directory on Windows.

 =head1 AUTHOR

 Steve Bertrand, C<< <steveb at> >>


 Copyright 2020-2021 Steve Bertrand.

 This program is free software; you can redistribute it and/or modify it
 under the terms of the the Artistic License (2.0). You may obtain a
 copy of the full license at: