NAME
Dist::Zilla::Util::CurrentCmd - Attempt to determine the current command
Dist::Zilla is running under.
VERSION
version 0.002001
SYNOPSIS
use Dist::Zilla::Util::CurrentCmd qw(current_cmd);
...
if ( is_install() ) {
die "This plugin hates installing things for some reason!"
}
if ( is_build() ) {
print "I Love you man\n";
}
if ( current_cmd() eq 'run' ) {
die "RUN THE OTHER WAY"
}
DESCRIPTION
This module exists in case you are absolutely certain you want to have
different behaviors for either a plugin, or a bundle, to trigger on ( or
off ) a specific phase.
Usually, this is a bad idea, and the need to do this suggests a poor
choice of work-flow to begin with.
That said, this utility is *probably* more useful in a bundle than in a
plugin, in that it will be slightly more optimal than say, having an
"ENV" flag to control this difference.
FUNCTIONS
"current_cmd"
Returns the name of the of the first "command" entry in the "caller"
stack that matches
/\ADist::Zilla::App::Command::(.*)::([^:\s]+)\z/msx
For instance:
Dist::Zilla::App::Command::build::execute ->
build
"is_build"
Convenience shorthand for "current_cmd() eq 'build'"
"is_install"
Convenience shorthand for "current_cmd() eq 'install'"
"as_cmd"
Internals wrapper to lie to code operating in the callback that the
"current_cmd" is.
as_cmd('install' => sub {
is_install(); # true
});
CAVEATS
User beware, this code is both hackish and new, and relies on using
"caller" to determine which "Dist::Zilla::App::Command::" we are running
under.
There may be conditions that there are no "Command"s in the "caller"
stack which meet this definition, or the *first* such thing may be a
misleading representation of what is actually running.
And there's a degree of uncertainty of reliability, because I haven't
yet devised reliable ways of testing it that don't involve invoking
"dzil" ( which is problematic on testers where "Dist::Zilla" is in @INC
but "dzil" is not in "ENV{PATH}" )
To that extent, I don't even know for sure if this module works yet, or
if it works in a bundle, or if it works in all commands, or if it works
under "Dist::Zilla::App::Tester" as expected.
AUTHOR
Kent Fredric
COPYRIGHT AND LICENSE
This software is copyright (c) 2014 by Kent Fredric
.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.