Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
73 lines (50 sloc) 2.52 KB
If you have a Perl 6 project, it already conforms to the requirements posed
by proto.
With that said, there are some things that proto will do for you and your
project, if you only adhere to a few easy-to-fulfill conventions:
* Dependencies
* Building
* Running tests
* Joining the Perl 6 Ecosystem
== Dependencies
This is what proto was designed for: installing the projects you need,
and building them before building your project.
If you have dependencies, declare them in a file deps.proto in the root of
your repository. The November wiki has a deps.proto that looks like this:
(That's one line, containing the word 'html-template'.)
Things that proto expects to see in a deps.proto file:
* Blank lines.
* Lines with a single word containing only alphanumerics, dashes and
* Any of the above with trailing whitespace.
* Any of the above with a trailing '#' comment.
If it finds anything else, proto will halt and publicly ridicule you, the
project developer, for not living up to an easy-to-fulfill convention.
== Building
As a bonus to installing, proto can build your project. There will always be
a build step, regardless of how your repository looks. The steps performed
by proto are
$ perl Makefile.PL # or perl6
$ make
Should Makefile.PL etc be missing, the above steps will not be performed,
and the build process is considered successful (sic). If the above steps
fail along the way, the build chain is halted.
== Running tests
Proto will attempt 'make test'; if there's no target 'test' in the Makefile,
proto will try to run 'prove' recursively on your project's t/ directory,
using perl6 as the executable. If prove is missing, or the t/ directory is
missing, the testing will be considered successful.
== Installing
If the Makefile is present, 'make install' would be run to install the
module. Otherwise, all the modules from lib/ will be compiled to PIR and
installed to a proper location, so they will be available to use in Perl 6
programs. Furthermore, the files from the bin/ directory (if available) will
be installed too, so one will be able to run them as a standalone application.
== Joining the Perl 6 Ecosystem
Proto assumes that if your project has a top level lib/ directory, you
intend other code to 'use' modules therein. Currently subfolders form a
namespace hierarchy so that lib/A/ satisfies 'use A::B;' but this will
become more complicated after S11-style versioning is implemented.
Proto cannot change your PERL6LIB environment variable, but will warn you
about needed changes.