=head1 NAME
makeppbuiltin -- Stand-alone access to builtin commands in makepp
=
for
vc
$Id
: makeppbuiltin.pod,v 1.7 2008/11/23 21:02:55 pfeiffer Exp $
=head1 SYNOPSIS
B<makeppbuiltin> S<[ I<metaoption> ... ]> I<command> -?|--help
B<mppb> S<[ I<metaoption> ... ]> I<command> -?|--help
B<makeppbuiltin> S<[ I<metaoption> ... ]> I<command> S<[ I<option> ... ]> S<[ I<argument> ... ]>
B<mppb> S<[ I<metaoption> ... ]> I<command> S<[ I<option> ... ]> S<[ I<argument> ... ]>
or
ln makeppbuiltin I<command>
I<command> -?|--help
I<command> S<[ I<option> ... ]> S<[ I<argument> ... ]>
=head1 DESCRIPTION
This command allows you to call the L<builtin commands|makepp_builtins> makepp
provides, from outside makepp as well. This could be necessary
if
you've
installed things
with
Makeppfile targets that
use
C<
&install
>, but there is
no
corresponding C<
&uninstall
> target. Or you need a feature not usually found
in the Unix counterparts like C<ln -r>. That's what this command is
for
.
The commands get a simple additional C<--help> option, which their builtin
counterparts lack. This works by parsing the command's option declaration.
It cannot however find out, what other arguments the command expects.
The metaoptions allow loading your own command or helper functions, but only
if
it comes from a module:
=over
=item -A filename
=item --args-file=filename
=item --arguments-file=filename
Read the file and parse it as possibly quoted options on one or several lines.
=item -I dir
=item --include=dir
=item --include-dir=dir
Add I<dir> to Perl load path C<
@INC
>.
=item -M module[=arg,...]
=item --module=module[=arg,...]
Load module and
import
any functions it exports.
=back
=head1 DIRECT CALL
If you like to call such a command more frequently, you can call it directly,
by linking C<makeppbuiltin> to the name of that command. The name of the
builtin can occur anywhere within the file-name without directory. So any of
the following links would invoke the builtin C<template> command (but the
last
would need to be escaped from the Shell):
=over 4
=item template
=item template.pl
=item makepptemplate
=item templatepp
=item
&template
=back
=head1 DIFFERENCES
There are a few notable differences between the usual call within a Makeppfile
rule, and a stand-alone call:
=over 4
=item Syntax
Builtin commands are not parsed by the Shell within makepp. There are subtle
differences in how makepp quotes work, e.g. dollar signs are expanded by
makepp even within single quotes, and need to be doubled to escape them.
Various characters, like C<*>, C<&> or C<|> are not special to makepp and need
not be escaped.
B<Difference:> To start the command stand-alone you are probably using a Shell.
Here you must adapt such special cases to the syntactical requirements of the
Shell.
=item Variables and Functions
Before makepp executes the rule actions, they will already have undergone
expression expansion of makepp variables and functions.
B<Difference:> When called from the Shell, you will instead get unprotected
Shell variables and expressions expanded,
before
the comand is called.
=item Perl Code
Each Makeppfile lives in its own (anonymous) Perl
package
. Anything you
do
therein is available
when
running builtin commands. For example, you can set
variables or define functions, and
use
them within the Perl code of those
commands that
accept
it.
B<Difference:> In stand-alone usage there is
no
such context. Everything you
need, must be in the Perl code you pass the command, or in modules you
use
.
=back
=head1 ENVIRONMENT
Makeppbuiltin looks at the following environment variables:
=over 4
=item MAKEPPBUILTINFLAGS
Any flags in this environment variable are interpreted as command line options
before
any explicit options. Quotes are interpreted like in makefiles.
=item I<DIRECTNAME>FLAGS
This variable is used instead of C<
$MAKEPPBUILTINFLAGS
>
when
makeppbuiltin is
linked to I<directname> as explained under L<DIRECT CALL>.
=back
=head1 AUTHOR
Daniel Pfeiffer (occitan
@esperanto
.org)