The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Munner - Multi-Apps Runner

DESCRIPTION

This script "munner" run multiple apps in one commands.

Why we need this?

Some project may involves different APIs running at the background in order to exchange information. But what if we just use munner to start these apis in one call. It is a very handy tools to start multiple applications.

How to install it?

System perl

 cpan -i App::Munner

Perlbrew

 echo App::Munner >> ~/cpanmfile
 perlbrew install-cpanm
 perlbrew use <5.x.x>
 cat ~/cpanmfile | cpanm

Carton

 cd <to your main project>
 echo 'requires "App::Munner";' >> cpanfile
 carton install

How to use it?

System perl

after install, just call

 munner <command> <options>

Perlbrew

 perlbrew exec --with <PERL_VERSION> munner <command> <options>

carton

 carton exec munner <command> <options>

Commands and Options

 munner [start|duck|stop|restart|graceful|status|(access-|error-|)logs|help|doc] [-Aacdg] [long options...]
        -c --config       App runner config file ( default ./munner.yml )
        -d --base-dir     Global base directory ( default ../ )
        -a --app          run App
        -g --group        run Group
        -A --all          run All

What else?

Config file

To run munner, you will need a YAML format of config file.

The config file name is munner.yml

It looks like this:

 ---------------------------
 base_dir: "... base directory to find the app ..."
 apps:
    web-frontend:
        dir: "... either full path or the tail part after base_dir ..."
        run: "... command ..."
        carton: 1 or 0
    db-api:
        dir: "... path cound find the command to run ..."
        env:
            - foo: 1
            - bar: 2
        run: "... start up command ..."
    event-api:
        dir: "websrc/event-api"
        run: bin/app.pl
        carton: 1
    login-server:
        dir: websrc/login-server
        run: bin/app.pl
        carton: 1
 groups:
    database:
        ## only start these apps
        apps:
            - login-server
            - db-api
    events:
        apps:
            - login-server
            - event-api
    website:
        ## start apps and above groups
        apps:
            - web-frontend
        groups:
            - database
            - events

Where to save the config file?

By default munner will find the config file at the current directory. If you have the config some where else, you will need to tell munner like below:

 pwd --> /home/micvu/websrc/website
 munner start -c /home/micvu/munner.yml <options> ...

If the config is in the current directory.

 pwd --> /home/micvu/websrc/website
 ls munner.yml --> munner.yml
 munner start <options> --> without telling the config file location

Command examples:

start web-frontend only

 munner start -a web-frontend

start event-api at the background and start web-frontend

 munner duck -a event-api
 munner start -a web-frontend

restart background event-api

 munner restart -a event-api 

start everything website (db, event and login)

 munner start -g website

start all apps in the config

 munner start -A

start all groups in the config?

 do we need one? and why? munner -G

show a simple help page

 munner help

show this perldoc

 either munner doc
 or perldoc App::Munner

AUTHOR

Michael Vu <micvu@cpan.org>

SUPPORT

Please submit bugs to the Bitbucket Issue Tracker: http://goo.gl/gHJQii or via email <micvu@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2014 by Michael Vu.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)