Compiler-Parser
view release on metacpan or search on metacpan
t/app/Plack/Runner.t view on Meta::CPAN
],
},
},
branch { '=',
left => leaf '$server',
right => branch { '->',
left => leaf '$self',
right => function_call { 'load_server',
args => [
leaf '$loader',
],
},
},
},
branch { '->',
left => leaf '$loader',
right => function_call { 'run',
args => [
leaf '$server',
],
},
},
],
},
leaf '1',
]);
};
done_testing;
__DATA__
package Plack::Runner;
use strict;
use warnings;
use Carp ();
use Plack::Util;
use Try::Tiny;
sub new {
my $class = shift;
bless {
env => $ENV{PLACK_ENV},
loader => 'Plack::Loader',
includes => [],
modules => [],
default_middleware => 1,
@_,
}, $class;
}
# delay the build process for reloader
sub build(&;$) {
my $block = shift;
my $app = shift || sub { };
return sub { $block->($app->()) };
}
sub parse_options {
my $self = shift;
local @ARGV = @_;
# From 'prove': Allow cuddling the paths with -I, -M and -e
@ARGV = map { /^(-[IMe])(.+)/ ? ($1,$2) : $_ } @ARGV;
my($host, $port, $socket, @listen);
require Getopt::Long;
my $parser = Getopt::Long::Parser->new(
config => [ "no_auto_abbrev", "no_ignore_case", "pass_through" ],
);
$parser->getoptions(
"a|app=s" => \$self->{app},
"o|host=s" => \$host,
"p|port=i" => \$port,
"s|server=s" => \$self->{server},
"S|socket=s" => \$socket,
'l|listen=s@' => \@listen,
'D|daemonize' => \$self->{daemonize},
"E|env=s" => \$self->{env},
"e=s" => \$self->{eval},
'I=s@' => $self->{includes},
'M=s@' => $self->{modules},
'r|reload' => sub { $self->{loader} = "Restarter" },
'R|Reload=s' => sub { $self->{loader} = "Restarter"; $self->loader->watch(split ",", $_[1]) },
'L|loader=s' => \$self->{loader},
"access-log=s" => \$self->{access_log},
"path=s" => \$self->{path},
"h|help" => \$self->{help},
"v|version" => \$self->{version},
"default-middleware!" => \$self->{default_middleware},
);
my(@options, @argv);
while (defined(my $arg = shift @ARGV)) {
if ($arg =~ s/^--?//) {
my @v = split '=', $arg, 2;
$v[0] =~ tr/-/_/;
if (@v == 2) {
push @options, @v;
} elsif ($v[0] =~ s/^(disable|enable)_//) {
push @options, $v[0], $1 eq 'enable';
} else {
push @options, $v[0], shift @ARGV;
}
} else {
push @argv, $arg;
}
}
push @options, $self->mangle_host_port_socket($host, $port, $socket, @listen);
push @options, daemonize => 1 if $self->{daemonize};
$self->{options} = \@options;
$self->{argv} = \@argv;
}
sub set_options {
my $self = shift;
push @{$self->{options}}, @_;
( run in 1.067 second using v1.01-cache-2.11-cpan-a9496e3eb41 )