NAME
ExtUtils::Builder::Planner - An ExtUtils::Builder Plan builder
VERSION
version 0.013
SYNOPSIS
my $planner = ExtUtils::Builder::Planner->new;
$planner->create_node(
target => 'foo',
dependencies => [ 'bar' ],
actions => \@actions,
);
my $plan = $planner->materialize;
DESCRIPTION
METHODS
add_node($node)
This adds an ExtUtils::Builder::Node to the planner.
create_node(%args)
This creates a new node and adds it to the planner using add_node
. It takes the same named arguments as ExtUtils::Builder::Node
.
target
The target of the node. This is mandatory.
dependencies
The list of dependencies for this node.
actions
The actions to perform to create or update this node.
type
This marks the type of the node:
file
orphony
, defaulting to the former.
add_plan($plan)
This adds all nodes in the plan to the planner.
add_delegate($name, $sub)
This adds $sub
as a helper method to this planner, with the name $name
.
create_phony($target, @dependencies)
This is a helper function that calls create_node
for a action-free phony target.
load_module($extension, $version, %options)
This adds the delegate from the given module. If $version
is defined it will verify if the extension is at least that version.
new_scope()
This opens a new scope on the planner. It return a child planner that shared the build tree state with its parent, but any delegated added to it will not be added to the parent.
run_dsl($filename)
This runs $filename
as a DSL file. This is a script file that includes Planner methods as functions. For example:
use strict;
use warnings;
create_node(
target => 'foo',
dependencies => [ 'bar' ],
actions => [
command(qw/echo Hello World!/),
function(module => 'Foo', function => 'bar'),
code(code => 'print "Hello World"'),
],
);
load_module("Foo");
add_foo("a.foo", "a.bar");
This will also add command
, function
and code
helper functions that correspond to ExtUtils::Builder::Action::Command, ExtUtils::Builder::Action::Function and ExtUtils::Builder::Action::Code respectively.
materialize()
This returns a new ExtUtils::Builder::Plan object based on the planner.
AUTHOR
Leon Timmermans <fawaka@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Leon Timmermans.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.