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.

