Dist::Zilla::Util::CurrentCmd - Attempt to determine the current command Dist::Zilla is running under.
version 0.002003
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.
ENV
current_cmd
Returns the name of the of the first command entry in the caller stack that matches
command
caller
/\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'
current_cmd() eq 'build'
is_install
Convenience shorthand for current_cmd() eq 'install'
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 });
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.
Dist::Zilla::App::Command::
There may be conditions that there are no Commands in the caller stack which meet this definition, or the first such thing may be a misleading representation of what is actually running.
Command
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} )
dzil
Dist::Zilla
@INC
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.
Dist::Zilla::App::Tester
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.
To install Dist::Zilla::Util::CurrentCmd, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Dist::Zilla::Util::CurrentCmd
CPAN shell
perl -MCPAN -e shell install Dist::Zilla::Util::CurrentCmd
For more information on module installation, please visit the detailed CPAN module installation guide.