#!/usr/bin/env perl
use warnings;
use strict;
use EV ();
use Feersum ();
require Getopt::Long;
my $native = 0;
Getopt::Long::Configure("no_ignore_case", "no_auto_abbrev", "pass_through");
Getopt::Long::GetOptions(
"native!" => \$native,
);
my $runner;
if ($native) {
my $listen = 'localhost:5000';
my $pre_fork = 0;
my $verbose = 0;
Getopt::Long::GetOptions(
"listen=s" => \$listen,
"pre-fork=i" => \$pre_fork,
"verbose!" => \$verbose,
);
require Feersum::Runner;
my $app_file = pop @ARGV || 'app.feersum';
$runner = Feersum::Runner->new(
'listen' => [$listen],
app_file => $app_file,
pre_fork => $pre_fork,
quiet => !$verbose,
);
}
else {
my @args = (
server => 'Feersum',
env => 'deployment',
version_cb => sub {
print "Feersum $Feersum::VERSION on EV $EV::VERSION\n";
}
);
require Plack::Runner;
$runner = Plack::Runner->new(@args);
$runner->parse_options(@ARGV);
}
$runner->run;
__END__
=head1 NAME
feersum - feersum app loader
=head1 SYNOPSIS
feersum [plackup opts] [--pre-fork=N] [app.psgi]
feersum --native [--listen host:port] [--pre-fork=N] [app.feersum]
=head1 DESCRIPTION
Loads the specified app file into a Feersum server.
In both cases, if C<--pre-fork=N> is specified, that many worker processes are
used to serve requests. See L<Feersum::Runner> for details.
If in native mode (when running C<feersum --native>), currently only a
C<--listen> parameter is accepted. By default, the server will listen on
localhost port 5000.
When running in PSGI mode (non-native), L<Plack::Runner> is used. See that
module for documentation and defaults.
=cut