Attempt to determine the current command Dist::Zilla is running under
Perl
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
author/show_stack
lib/Dist/Zilla/Util
maint
misc
t
.gitignore
.mailmap
.perltidyrc
.travis.yml
Changes
LICENSE
README.mkdn
dist.ini
dist.ini.meta
perlcritic.rc
weaver.ini

README.mkdn

NAME

Dist::Zilla::Util::CurrentCmd - Attempt to determine the current command Dist::Zilla is running under.

VERSION

version 0.002004

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 Commands 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 kentnl@cpan.org

COPYRIGHT AND LICENSE

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.