logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

MooseX::Runnable - Tag a class as a runnable application

Architecture

       "MX::Runnable" is designed to be extensible; users can run plugins from the command-line, and application
       developers can add roles to their class to control behavior.

       For example, if you consume MooseX::Getopt, the command-line will be parsed with "MooseX::Getopt".  Any
       recognized args will be used to instantiate your class, and any extra args will be passed to "run".

Author

       Jonathan Rockway <jrockway@cpan.org>

Caveats

       Many of the plugins shipped are unstable; they may go away, change, break, etc.  If there is no
       documentation for a plugin, it is probably just a prototype.

Contributors

       •   Jonathan Rockway <jon@jrock.us>

       •   Karen Etheridge <ether@cpan.org>

       •   Doug Bell <doug.bell@baml.com>

       •   Duke Leto <jonathan@leto.net>

Description

       MooseX::Runnable is a framework for making classes runnable applications.  This role doesn't do anything
       other than tell the rest of the framework that your class is a runnable application that has a "run"
       method which accepts arguments and returns the process' exit code.

       This is a convention that the community has been using for a while.  This role tells the computer that
       your class uses this convention, and let's the computer abstract away some of the tedium this entails.

Name

       MooseX::Runnable - Tag a class as a runnable application

Required Methods

run
       Your class must implement "run".  It accepts the command-line args (that were not consumed by another
       parser, if applicable) and returns an integer representing the UNIX exit value.  "return 0" means
       success.

Support

       Bugs may be submitted through the RT bug tracker
       <https://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Runnable> (or bug-MooseX-Runnable@rt.cpan.org
       <mailto:bug-MooseX-Runnable@rt.cpan.org>).

       There is also a mailing list available for users of this distribution, at
       <http://lists.perl.org/list/moose.html>.

       There is also an irc channel available for users of this distribution, at "#moose" on "irc.perl.org"
       <irc://irc.perl.org/#moose>.

Synopsis

       Create a class, tag it runnable, and provide a "run" method:

           package App::HelloWorld;
           use feature 'say';
           use Moose;

           with 'MooseX::Runnable';

           sub run {
              my ($self,$name) = @_;
              say "Hello, $name.";
              return 0; # success
           }

       Then you can run this class as an application with the included "mx-run" script:

           $ mx-run App::HelloWorld jrockway
           Hello, jrockway.
           $

       "MooseX::Runnable" supports MooseX::Getopt, and other similar systems (and is extensible, in case you
       have written such a system).

Things You Get

"mx-run"
       This is a script that accepts a "MooseX::Runnable" class and tries to run it, using
       "MooseX::Runnable::Run".

       The syntax is:

         mx-run Class::Name

         mx-run <args for mx-run> -- Class::Name <args for Class::Name>

       for example:

         mx-run -Ilib App::HelloWorld --args --go --here

       or:

         mx-run -Ilib +Persistent --port 8080 -- App::HelloWorld --args --go --here

   "MooseX::Runnable::Run"
       If you don't want to invoke your app with "mx-run", you can write a custom version using
       MooseX::Runnable::Run.

Version

       version 0.10

See Also