Giter Club home page Giter Club logo

app-dispatch's Introduction

NAME
    App::Dispatch - Tool to have #! dispatch to the best executable for the
    job.

DESCRIPTION
    App::Dispatch is an alternative to "/usr/bin/env". Unlike
    "/usr/bin/env", it does not rely on your environment to tell it which
    program to use. You can set system-wide, and user level configurations
    for which program to use. You can also specify a cascade of aliases
    and/or paths to search.

    Lately it has been a trend to avoid the system install of programming
    languages, Perl, Ruby, Python, etc, in most cases it is recommended that
    you do not use the system installation of the language. A result of this
    is heavy use of "#!/usr/bin/env" to lookup the correct binary to execute
    based on your $PATH. The problem with "/usr/bin/env" is that you may not
    always have control over the environment. For example if you have a
    script that you must run with sudo, your $PATH will be reset.

    With App::Dispatch you can specify multiple locations to try when
    looking for the program. You can also configure aliases at the system or
    user level. This is useful when you have multiple versions of the
    program installed and wish different things to use different ones by a
    label. In this way the versions need not be in the same location on each
    machine that can run the script.

SYNOPSYS
  NO CONFIG
    The following #! line will cause the script to be run by perl, it will
    try each path listed in order.

        #!/usr/local/bin/dispatch perl /path/to/perl /alternate/path/to/perl /another/perl

    This tells the script to use the specified path if available, otherwise
    fall back to whichever perl is in the environment.

        #!/usr/local/bin/dispatch perl /path/to/perl ENV

    You can also pass arguments to the program by putting them after "--":

        #!/usr/local/bin/dispatch perl /path/to/perl ENV -- -w

  WITH CONFIG
    $HOME/.dispatch.conf:

        [perl]
            SYSTEM     = /usr/bin/perl
            DEFAULT    = /opt/ACME/current/bin/perl
            production = /opt/ACME/stable/bin/perl

    This #! line will run perl, it will find the 'production' perl, if no
    production perl is found it will try 'DEFAULT'. Anything after the -- is
    passed as arguments to perl.

        #!/usr/local/bin/dispatch perl production DEFAULT -- -w

    This will run the default perl.

        #!/usr/local/bin/dispatch perl

CONFIG FILES
  LOCATIONS
    Locations are loaded in this order. All locations that exist are loaded.
    Later files can override earlier ones.

    /etc/dispatch.conf
        The system wide configuration

    /etc/dispatch/*
        System wide config dir, to have app specific config files for easier
        management with system packages.

    $HOME/.dispatch.conf
        User specific overrides or additions.

  EXAMPLE
        [perl]
            SYSTEM     = /usr/bin/perl
            DEFAULT    = /opt/ACME/current/bin/perl
            production = /opt/ACME/stable/bin/perl

        [gcc]
            SYSTEM  = /usr/bin/gcc
            DEFAULT = /usr/bin/gcc
            old     = /opt/legacy/bin/gcc

NOTE FOR CPAN AUTHORS
    This tool is very useful for perl shops in their own scripts. However it
    most likely should not be used in any scripts that will be installed
    with a cpan distribution. Distributions should use a normal #! line that
    will be rewritten by the build tools to use the perl for which the dist
    was installed. This is important because of dependency chains and XS
    modules.

AUTHORS
    Chad Granum [email protected]

COPYRIGHT
    Copyright (C) 2013 Chad Granum

    App-Dispatch is free software; Standard perl licence.

    App-Dispatch is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for
    more details.

app-dispatch's People

Contributors

exodist avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.