#! perl use strict; use warnings; use App::ModuleBuildTiny; use File::Basename 'basename'; our $VERSION = '0.049'; print_help() if ($ARGV[0] // 'help') eq 'help'; modulebuildtiny(@ARGV); sub print_help { my $program = basename($0); print "Usage: $program [arguments ...]\n\nAvailable commands:\n\n"; App::ModuleBuildTiny::Help->filter(__FILE__); print "\n"; exit !@ARGV; } package App::ModuleBuildTiny::Help; use parent qw(Pod::Simple::Methody); sub start_head1 { my ($self, $attrs) = @_; $self->{_mbth_head1_content} = ''; } sub end_head1 { my ($self) = @_; $self->{_mbth_in_subcommands} = delete($self->{_mbth_head1_content}) eq 'SUBCOMMANDS'; } sub start_head2 { my ($self, $attrs) = @_; return unless $self->{_mbth_in_subcommands}; $self->{_mbth_subcommand_name} = ''; } sub end_head2 { my ($self) = @_; if (my $cmd = delete $self->{_mbth_subcommand_name}) { $self->output_fh->printf(" %-10s - ", $1) if $cmd =~ /(^\w+)/; $self->{_mbth_print_desc} = 1; } } sub handle_text { my ($self, $text) = @_; if (defined $self->{_mbth_head1_content}) { $self->{_mbth_head1_content} .= $text; return; } if (defined $self->{_mbth_subcommand_name}) { $self->{_mbth_subcommand_name} .= $text; return; } if (delete $self->{_mbth_print_desc}) { $self->output_fh->say($1) if $text =~ /^([^.(]+)/; } } __END__ =head1 NAME mbtiny - A standalone authoring script for Module::Build::Tiny =head1 SYNOPSIS mbtiny listdeps | cpanm mbtiny test --release mytiny regenerate mbtiny upload =head1 DESCRIPTION C is a tool to help assemble your CPAN distributions. It's a minimalist tool that tries to come with as few surprises as possible, and thus provide a gentle learning curve for its users. =head1 SUBCOMMANDS =head2 regenerate [--bump] [--version=... Regenerate the specified files. If no files are given, defaults to all six files it can regenerate. You usually want to do this when bumping the version of a module. Takes the following options: =over 4 =item * bump Bump the version of the distribution before regenerating. The default for this when regenerating all files can be set in the configuration. =item * version = Set the version of the distribution before regenerating. =item * scan Scan for dependencies to include in the metafiles. The default for this can be set in the configuration. =item * trial Make the new version a trial version. =item * commit Create a git commit for the version bump. The default for this when regenerating all files can be set in the configuration. =item * verbose This will make regeneration more verbose. =item * dry-run This will cause it to not write anything to disk, this is only ever useful when combined with the verbose option. =back The following files can be generated: =over 4 =item * Build.PL The code needed to build the dist using L or L. It will use the former unless a C directory is present. =item * MANIFEST The list of files in this distribution, and optionally descriptions. =item * META.json Most meta information about this distributions. Useful for both presenting information to the user as for installing the distribution. =item * META.yml 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. =item * README A description of the project, based on the documentation of the main module. =item * LICENSE The license of the distribution. =back =head2 upload [--silent] [--config=] [--tag] [--push] Assemble a tarball and upload it to CPAN. Using a L compatible F<.pause> file in your home directory is recommended, but if it's absent or incomplete your credentials will be asked on the console. Takes the following options: =over 4 =item * tag Tag the current release with the current version. The default for this can be set in the configuration. =item * push Push the current commit, and tag it C<--tag> is also specified. The default for this can be set in the configuration. =item * silent This will enable silent mode =item * config= The location of your pause credentials =back =head2 test [--no-author] [--release] Run all of the tests of a distribution. Takes two negatable options: =over 4 =item * release Run release tests. Defaults to false. =item * author Run author tests. Defaults to true. =back =head2 scan [--omit-core=] [--omit=] Scan the C, C