The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Build Status MetaCPAN Release

NAME

Minilla - CPAN module authoring tool

SYNOPSIS

minil new     - Create a new dist
minil test    - Run test cases
minil dist    - Make your dist tarball
minil install - Install your dist
minil release - Release your dist to CPAN
minil run     - Run arbitrary commands against build dir

DESCRIPTION

Minilla is a CPAN module authoring tool. Minilla provides minil command for authorizing a CPAN distribution.

(M::I - inc) + shipit + (dzil - plugins)

CONVENTION

As stated above, Minilla is opinionated. Minilla has a bold assumption and convention like the followings, which are almost compatible to the sister project Dist::Milla.

GETTING STARTED

# First time only
% cpanm Minilla
# Minilla has only a few deps. It should be very quick

# Make a new distribution
% minil new Dist-Name
% cd Dist-Name/

# Git commit
% git commit -m "initial commit"

# Hack your code!
% $EDITOR lib/Dist/Name.pm t/dist-name.t cpanfile

# Done? Test and release it!
% minil release

It's that easy.

You already have distributions with Module::Install, Module::Build, Dist::Zilla or ShipIt? Migrating is also trivial. See "MIGRATING" in Minilla::Tutorial for more details.

WHY MINILLA?

Repository managed by Minilla is git install ready.

The repository created and managed by Minilla is git install ready. You can install the library by cpanm git://....

Of course, you can install Minilla from cpanm git://github.com/tokuhirom/Minilla.git.

Minilla is built on small libraries.

Minilla is built on only few small libraries. You can install Minilla without a huge list of dependencies to heavy modules.

And, what is Minilla?

Minilla is a Kaiju (Japanese giant monster) from the Godzilla series of films and is the first of several young Godzillas.
https://en.wikipedia.org/wiki/Minilla

Minilla's release process

Minilla's release process is the following.

CheckUntrackedFiles

Checking git's untracked files. If there's untracked files, minilla will abort.

CheckOrigin

This step will run the `git remote`. If there's no remote, minilla will abort.

BumpVersion

Minilla will show 'Next Release?' prompt. You can input next version number.

After that, minilla rewrites version numbers in **/*.pm, **/*.pl, and a script file contains perl-ish shebang.

CheckChanges

You need to write Changes file. Your module's users need to know the difference between versions.

Minilla's Changes file includes `{{$NEXT}}` next version indicator. You should put update informations after that.

RegenerateFiles

In this step, minilla will regenerate META.json, README.md and (Makefile.PL|Build.PL).

RunHooks

This step runs commands listed on `release.hooks` key in minil.toml.

DistTest

This script runs test cases in clean working directory with $ENV{RELEASE_TESTING} = 1.

MakeDist

Make distribution tar ball.

UploadToCPAN

Upload your module to CPAN.

RewriteChanges

Rewrite Changes file. Minilla replaces {{$NEXT}} with released version number and current date & time. And put {{$NEXT}} on the first line.

Commit

Commit current directory with automatically generated commit message from Changes file. And push it to origin.

Tag

Create new git tag and push it to origin.

CONFIGURATION

Minilla uses Convention over Configuration.

But, you can write configurations to minil.toml file in TOML format. Minilla reads the minil.toml file in the root directory of your project.

FAQ

bash/zsh completion

Minilla provides bash and zsh completion files under contrib/ directory.

AUTHORS

Tokuhiro Matsuno < tokuhirom@gmail.com >

Tatsuhiko Miyagawa

THANKS TO

RJBS, the author of Dist::Zilla. Dist::Zilla points CPAN authorizing tool.

SEE ALSO

LICENSE

Copyright (C) Tokuhiro Matsuno

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.