9bc82ce 11 years ago
1 contributor
63 lines | 1.738kb
#!/usr/bin/env perl

use strict;
use warnings;

use FindBin;
use lib "$FindBin::Bin/../lib";

use Getopt::Long qw(GetOptions :config no_auto_abbrev no_ignore_case);

GetOptions(
  'h|help'     => \my $help,
  'l|listen=s' => \my @listen,
  'v|verbose'  => sub { $ENV{MORBO_VERBOSE} = 1 },
  'w|watch=s'  => \my @watch
);

die <<"EOF" if $help || !(my $app = shift);
usage: $0 [OPTIONS] [APPLICATION]

  morbo script/myapp
  morbo myapp.pl
  morbo -w /usr/local/lib -w public myapp.pl

These options are available:
  -h, --help                     Show this message.
  -l, --listen <location>        Set one or more locations you want to listen
                                 on, defaults to the value of MOJO_LISTEN or
                                 "http://*:3000".
  -v, --verbose                  Print details about what files changed to
                                 STDOUT.
  -w, --watch <directory/file>   Set one or more directories and files to
                                 watch for changes, defaults to the
                                 application script as well as the "lib" and
                                 "templates" directories in the current
                                 working directory.
EOF

$ENV{MOJO_LISTEN} = join(',', @listen) if @listen;
require Mojo::Server::Morbo;
my $morbo = Mojo::Server::Morbo->new;
$morbo->watch(\@watch) if @watch;
$morbo->run($app);

=head1 NAME

morbo - Morbo HTTP and WebSocket development server

=head1 SYNOPSIS

  $ morbo --help
  $ morbo myapp.pl

=head1 DESCRIPTION

Start L<Mojolicious> and L<Mojolicious::Lite> applications with the
L<Mojo::Server::Morbo> web server.

=head1 SEE ALSO

L<Mojolicious>, L<Mojolicious::Guides>, L<http://mojolicio.us>.

=cut