NAME

Dist::Zilla::Plugin::BuildFile - build files by running an external command

VERSION

version 0.04

SYNOPSIS

In your dist.ini:

[BuildFile / Readme ]

[BuildFile / MyModule.pod ]
command = podextract MyModule.pm >{{$target}}

[BuildFile]
target = first long name.txt
target = second long name.txt

DESCRIPTION

During the 'BeforeBuild' phase of execution, this plugin creates or updates one or more files and tests that they now exist. Later, during the 'AfterBuild' phase of execution the created or updated files are deleted, unless the 'precious' configuration option was used.

Note that this plugin only generates the files on demand. In order to put them into the distribution, a FileGatherer such as GatherDir must also be run.

The file(s) are built by running an external command specified with the 'command =' configuration parameter. By default that command runs 'make' with the list of targets specified with the 'target = ' configuration parameter. If not specified, the list of targets contains a single item which is the name of the plugin.

Provided the command runs successfully, the list of files specified with the 'filename =' configuration parameter is now tested to see if they exist, and an error is generated if any of the files are missing. If not specfied, the list of files to check for is the same as the list of targets.

Thus, by itself, the section specifier of:

[BuildFile / Readme ]

has a BuildFile section name of 'Readme' which becomes the target file to build, so that the command 'make Readme' gets executed. Then a test is run to ensure that a file named 'Readme' now exists.

ATTRIBUTES

target

This attribute can appear multiple times and each time it names a target that needs to be built in order to generate the desired list of files to install in the distribution. If not specified, the list of targets is assumed to be just a single item with the same name as the plugin.

filename

This attribute can appear multiple times and each time it names a file that should exist as a result of this Plugin. After running the generating command, these files are checked for, and if they are not all present then an error is generated. If not specified, then the list of files is assumed to be the same as the list of targets.

command

This attribute gives the command that will be run to generate the desired filenames. The command is expanded by Text::Template, and the results are executed by IPC::Run3.

The command substitution uses the substitution delimeters of '{{' and '}}', and has the following variables that can be expanded:

@filenames - The list of filenames
@targets - The list of targets
$target - The first target in the list of targets
$filename - The first filename in the list of filenames

If not specified, the default command is "make {{@targets}}".

AUTHOR

Stirling Westrup <swestrup@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2010 by Stirling Westrup.

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