distmgr - Manage a Perl distribution

Description

The distmgr command line application that's installed along with the Dist::Mgr Perl distribution provides the facility to manage Perl distributions that you're the author of.

It allows you to create distributions (with or without a Github repository), release your distributions, automatically prepare your distribution's next development cycle, and install some or all of the features and files that we provide.

Configuration

Some command line arguments can be configured in a configuration file. See the config command section for details.

Limitations

Due to this software being early in its life, we have some limitations currently

Usage

distmgr <command> [OPTIONS]

Commands

create

This command creates a new distribution with all features enabled. Before using this command, you must create an empty Github repository through their site which we'll clone and insert the distribution's files into. We will include:

Options
-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)
-V | --verbose  Optional:  (Flag) Display verbose output for each process
-h | --help     Optional:  (Flag) Display help

dist

This command is similar to create, but does not include any VCS or CI 'fluff'. It creates a simple distribution skeleton, nothing more.

Options
-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
-h | --help     Optional:  (Flag) Display help
-V | --verbose  Optional:  (Flag) Display verbose output for each process

release

This command performs a release of your distribution. The following actions are performed (Git/CI operations are only executed if you're in a repository directory):

Options
-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
-V | --verbose  Optional:  (Flag) Display verbose output for each process
-w | --wait     Optional:  (Flag) Wait for CI tests to finish (--nowait to disable)
-h | --help     Optional:  (Flag) Display help

Note: The --cpanid and --cpanpw can be omitted if you set the CPAN_USERNAME and CPAN_PASSWORD environment variables prior to script run.

cycle

This command is run after release, and prepares your distribution/repository for your next development cycle. We:

Options
-h | --help     Optional:  (Flag) Display help

install

This command allows you to install the files and features of this software into an already-existing distribution that you author.

Options

All the options listed below are optional.

-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
-h | --help         Display help

-A | --all          Insert/Install all above options

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.

Examples

    distmgr create \
            --module Test::Module \
            --author "Steve Bertrand" \
            --email  steveb@cpan.org \
            --repo   test-module \
            --user   stevieb9
    distmgr dist \
            -m Test::Module \
            -a "Steve Bertrand" \
            -e steveb@cpan.org
    distmgr release \
            --cpanid STEVEB
            --cpanpw password
    distmgr cycle
    distmgr install \
            --gitignore \
            --ci \
            --badges \
            --bugtracker \
            --repository 
            
    # or
    
    distmgr install --all
    distmgr config

Command Process Flows

create process

dist process

release process

cycle process

install process