#!/usr/bin/env perl
use strict;
use File::Basename 'dirname';
use lib join '/', File::Spec->splitdir(dirname(__FILE__)), 'lib';
use lib join '/', File::Spec->splitdir(dirname(__FILE__)), '..', 'lib';
# Check if Mojo is installed
eval 'use Mojo::Server::Hypnotoad';
die <<EOF if $@;
It looks like you don't have the Mojolicious Framework installed.
Please visit http://mojolicio.us for detailed installation instructions.
EOF
use Getopt::Long 'GetOptions';
# "Hey sexy mama, wanna kill all humans?"
my $toad = Mojo::Server::Hypnotoad->new;
my $config = 'hypnotoad.conf';
my $help;
GetOptions(
'config=s' => sub { $config = $_[1] },
foreground => sub { $ENV{HYPNOTOAD_FOREGROUND} = 1 },
help => sub { $help = 1 },
test => sub { $ENV{HYPNOTOAD_TEST} = 1 },
);
$help = 1 unless my $app = shift || $ENV{HYPNOTOAD_APP};
# Usage
die <<"EOF" if $help;
usage: $0 [OPTIONS] [APPLICATION]
hypnotoad script/myapp
hypnotoad myapp.pl
These options are available:
--config <path> Configuration file, defaults to "hypnotoad.conf" in the
same directory as the application script.
--foreground Keep manager process in foreground.
--help Show this message.
--test Test application/configuration and exit.
EOF
# "This is it.
# The moment we should've trained for."
$toad->run($app, $config);
__END__
=head1 NAME
hypnotoad - Hypnotoad HTTP 1.1 And WebSocket Server
=head1 SYNOPSIS
% hypnotoad --help
% hypnotoad myapp.pl
=head1 DESCRIPTION
Start L<Mojolicious> and L<Mojolicious::Lite> applications with the
L<Mojo::Server::Hypnotoad> web server.
=head1 SEE ALSO
L<Mojolicious>, L<Mojolicious::Guides>, L<http://mojolicio.us>.
=cut