#! perl

use strict;
use warnings FATAL => 'all';
use App::ModuleBuildTiny;

modulebuildtiny(@ARGV);

=head1 NAME

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

=head1 VERSION

version 0.005

=head1 SYNOPSIS

 mbtiny listdeps | cpanm
 mbtiny test --release
 mbtiny dist

=head1 OVERVIEW

Essentially C<mbtiny> does only one thing: generate the ancillary files of a distribution. To be more exact, it can generate:

=over 4

=item * Build.PL

This contain the code needed to build the dist using L<Module::Build::Tiny|Module::Build::Tiny>.

=item * MANIFEST

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

=item * META.json

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

=item * META.yml

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

=back

The information for these files is gathered from various sources. The distribution name is taken from the local directory name. The version, abstract

=head1 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.

=head2 Feedback

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

=head2 Generator

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

=head1 SUBCOMMANDS

=over 4

=item * dist

This creates a distribution tarball.

=item * distdir

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

=item * test

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

=over 4

=item * release

Run release tests. Defaults to false.

=item * author

Run author tests. Defaults to true.

=back

=item * run

Run the specified command in a build distribution. If no command is given, the C<$SHELL> is invoked.

=item * listdeps

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

=item * regenerate <files>

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

=back
