Dist::Zilla::Util::CurrentCmd - Attempt to determine the current command Dist::Zilla is running under.
version 0.002004
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"
}
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.
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
Convenience shorthand for current_cmd() eq 'build'
Convenience shorthand for current_cmd() eq 'install'
Internals wrapper to lie to code operating in the callback that the current_cmd
is.
as_cmd('install' => sub {
is_install(); # true
});
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.
Kent Fredric kentnl@cpan.org
This software is copyright (c) 2017 by Kent Fredric kentfredric@gmail.com.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.