#!/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
  'f|foreground' => sub { $ENV{HYPNOTOAD_FOREGROUND} = 1 },
  'h|help'       => \my $help,
  's|stop'       => sub { $ENV{HYPNOTOAD_STOP}       = 1 },
  't|test'       => sub { $ENV{HYPNOTOAD_TEST}       = 1 },
  'd|dev'        => sub { $ENV{MOJO_MODE}            = 'development' };

my $app = shift || $ENV{HYPNOTOAD_APP};

if ($help || !$app) {
  require Mojolicious::Command;
  die Mojolicious::Command->new->extract_usage;
}

require Mojo::Server::Hypnotoad;

Mojo::Server::Hypnotoad->new->run($app);

=encoding utf8

=head1 NAME

hypnotoad - Hypnotoad HTTP and WebSocket server

=head1 SYNOPSIS

  Usage: hypnotoad [OPTIONS] [APPLICATION]

    hypnotoad script/myapp
    hypnotoad myapp.pl
    hypnotoad -f myapp.pl

  Options:
    -f, --foreground   Keep manager process in foreground.
    -h, --help         Show this message.
    -s, --stop         Stop server gracefully.
    -t, --test         Test application and exit.
    -d, --dev	       Run in development mode
    
=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
