💯 Doug Bell

NAME

Beam::Runner - Execute runnable objects from Beam::Wire containers

VERSION

version 0.006

SYNOPSIS

    beam run <container> <service> [<args...>]
    beam list
    beam list <container>
    beam help <container> <service>
    beam help

DESCRIPTION

This distribution is an execution and organization system for Beam::Wire containers. This allows you to prepare executable objects in configuration files and then execute them. This also allows easy discovery of container files and objects, and allows you to document your objects for your users.

Container Files

The container file is a configuration file that describes services. Some of these services are marked as executable by using the Beam::Runnable role.

The container file can have a special service called $summary which has a short summary that will be displayed when using the beam list command.

Here's an example container file that has a summary, configures a DBIx::Class schema (using the schema class for CPAN Testers: CPAN::Testers::Schema), and configures a runnable task called to_metabase located in the class CPAN::Testers::Backend::Migrate::ToMetabase:

    # migrate.yml
    $summary: Migrate data between databases

    _schema:
        $class: CPAN::Testers::Schema
        $method: connect_from_config

    to_metabase:
        $class: CPAN::Testers::Backend::Migrate::ToMetabase
        schema:
            $ref: _schema

For more information about container files, see the Beam::Wire documentation.

Services

A service is an object configured in the container file. Beam::Runner works with executable objects that consume the Beam::Runnable role. This role requires only a run() method be implemented in the class.

Services are expected to have documentation that will be displayed by the beam list and beam help commands. The beam list command will display the NAME section of the documentation, and the beam help command will display the NAME, SYNOPSIS, DESCRIPTION, ARGUMENTS, OPTIONS, ENVIRONMENT, and SEE ALSO sections of the documentation.

SEE ALSO

beam, Beam::Runnable, Beam::Wire

AUTHOR

Doug Bell <preaction@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by Doug Bell.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.