NAME

mbtiny - A standalone authoring script for Module::Build::Tiny

VERSION

version 0.029

SYNOPSIS

mbtiny listdeps | cpanm
mbtiny test --release
mbtiny dist

OVERVIEW

Essentially mbtiny does only one thing: generate the ancillary files of a distribution with App::ModuleBuildTiny. To be more exact, it can generate:

  • Build.PL

    This contain the code needed to build the dist using Module::Build::Tiny.

  • MANIFEST

    This contains the list of files in this distribution, and optionally descriptions.

  • META.json

    The file containing most meta information about this distributions. Useful for both presenting information to the user as for installing the distribution.

  • META.yml

    This is the legacy meta file. This is mainly useful for bootstrapping on CPAN clients too old to support META.json but recent enough to support configure_requires.

The information for these files is gathered from various sources.

  • The distribution name is taken from the local directory name.

  • The version, abstract and author are taken from the main module of the distribution.

  • The license is extracted from the POD, unless a metamerge file overrides this

  • Prerequisites are mostly taken from a cpanfile, prereqs.json, or prereqs.yml (whichever is present), except when injected explicitly (e.g. a configure dependency on Module::Build::Tiny).

    # cpanfile
    requires 'perl' => '5.012';
    requires 'Path::Tiny';
    recommends 'Term::ReadLine::Gnu';
    on test => sub {
      requires 'Test::More' => '0.88';
    };
    
    # prereqs.yml
    runtime:
      requires:
        perl: '5.012'
        Path::Tiny: 0
      recommends:
        Term::ReadLine::Gnu: 0
    test:
      requires:
        Test::More: '0.88'
  • A metamerge.json or metamerge.yml file can be used to merge any additional meta information you want (including dependencies). It is assumed to be in meta-spec 2 format unless otherwise specified.

    # metamerge.yml
    resources:
      bugtracker:
        web: 'https://github.com/rjbs/Dist-Zilla/issues'
      homepage: 'http://dzil.org/'
      x_IRC: 'irc://irc.perl.org/#distzilla'

WORKFLOWS

It supports two different workflows, which I call Feedback and Generator. In both cases, additional tools are used for various other authoring tasks such as perl-reversion, scan-prereqs-cpanfile and cpan-upload.

Feedback

In this workflow you're commiting the generated files to the filesystem/repository, in particular using the regenerate command.

Generator

In this workflow the generated files aren't written back to the file system, instead they are generated on every mbtiny command.

SUBCOMMANDS

  • test

    This runs all of the tests of a distribution. It takes two options that can both be negated:

    • release

      Run release tests. Defaults to false.

    • author

      Run author tests. Defaults to true.

  • run

    Run the specified command in a build distribution. It takes one boolean argument:

    • no-build

      This will cause mbtiny not to build the distribution before running the command.

  • upload

    This builds a tarball and uploads it to CPAN.

    Using a Config::Identity compatible .pause file in your home directory is recommended, but if it's absent or incomplete your credentials will be asked on the console.

  • shell

    Runs the $SHELL, this is equivalent to mbtiny run --no-build $SHELL. It takes one argument.

    • build

      This will cause mbtiny to build the distribution before running the shell.

  • dist

    This creates a distribution tarball.

  • distdir

    This creates a directory containing all of the files of the distribution.

  • listdeps

    List all dependencies of this distribution. By default it prints a list of modules. If the json option option is given, it's printed as JSON instead.

  • regenerate <files>

    This regenerates the given files. If no files are given, it defaults to the six files it can regenerate: Build.PL, MANIFEST, META.json META.yml, LICENSE and README. You usually want to do this after bumping the version of a module, adding a dependency or adding a file.

  • mint <distribution>

    This creates a new distribution. It takes one mandatory positional argument, the name of the new distribution, and up to five optional named arguments

    • abstract

      The abstract of this new distribution. It defaults to an empty string.

    • author

      The name of the author of this distribution. The default value is set in the configuration file.

    • dirname

      The directory name for the new distribution. It defaults to the distribution name.

    • email

      The email address of the author. The default value is set in the configuration file.

    • license

      The license of the new distribution. It default is set in the configuration file, this is usually Perl_5.

    • version

      The initial version of the new distribution. This defaults to 0.001.

  • configure <type>

    This creates or update your configuration file (at ~/.mbtiny/config). It takes one optional position argument that can take any of the following values:

    • update

      This asks you about all configuration items that are currently empty. This is the default.

    • all

      This asks you about all configuration items, even if they currently have a value.

    • reset

      This removes the current configuration file.