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 <kentfredric@gmail.com>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2014 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.

