App-Munner
view release on metacpan or search on metacpan
lib/App/Munner/Runner.pm view on Meta::CPAN
default => '.',
);
has app_config => (
is => "ro",
isa => "HashRef",
);
has env => (
is => "ro",
isa => "HashRef",
builder => "_build_env",
);
sub _build_env {
my $self = shift;
my $conf = $self->app_config;
return {}
if !$conf->{env};
return {}
if ref $conf->{env} ne "ARRAY";
return { map { my ( $key, $value ) = %$_ } @{ $conf->{env} } };
}
has fork_mode => (
is => "ro",
isa => "Int",
builder => "_build_fork_mode",
);
sub _build_fork_mode {
my $self = shift;
return ( $ENV{TERMINAL} // $self->env->{TERMINAL} )
? 1
: ( $self->todo =~ /start|duck/ ? 2 : 1 );
}
has user => (
is => "ro",
isa => "Str",
builder => "_build_user",
);
sub _build_user {
my $self = shift;
my $user = ( $self->env->{USER} || $ENV{USER} )
or die "Environment USER is not set\n";
return $user;
}
has sys_user_info => (
is => "ro",
isa => "HashRef",
builder => "_build_sys_user_info",
);
sub _build_sys_user_info {
my $self = shift;
my $user = $self->user;
my %info = ();
@info{qw( username password uid gid )} = getpwnam( $self->user )
or die "User ($user) is invalid\n";
return \%info;
}
has sys_uid => (
is => "ro",
isa => "Int",
builder => "_build_sys_uid",
);
sub _build_sys_uid {
shift->sys_user_info->{uid};
}
has sys_gid => (
is => "ro",
isa => "Int",
builder => "_build_sys_gid",
);
sub _build_sys_gid {
shift->sys_user_info->{gid};
}
has log_dir => (
is => "ro",
isa => "Str",
builder => "_build_log_dir",
);
sub _build_log_dir {
my $self = shift;
my $env = $self->env;
my $log_dir = $ENV{LOG_DIR} || $env->{LOG_DIR}
or return q{};
if ( $log_dir !~ /^\// ) {
my $base_dir = $self->base_dir || q{};
$log_dir = "$base_dir/$log_dir";
}
die "LOG_DIR: $log_dir is not found\n"
if !-d $log_dir;
return $log_dir;
}
has pid_file => (
is => "ro",
isa => "Str",
builder => "_build_pid_file",
);
sub _build_pid_file {
my $self = shift;
my $base_dir = $self->log_dir || $self->base_dir || q{};
my $app = $self->name;
my $file
= $ENV{PID_FILE} || $self->env->{PID_FILE} || "$base_dir/$app.pid";
return $self->_touch($file);
}
has error_log => (
( run in 0.831 second using v1.01-cache-2.11-cpan-99c4e6809bf )