try really hard to find a localenv if one isn't already in place

This commit is contained in:
Oliver Gorwits
2013-03-04 20:31:00 +00:00
parent a02a325dcc
commit c4e6e4c8eb
2 changed files with 41 additions and 12 deletions

View File

@@ -2,25 +2,40 @@
use strict; use strict;
use warnings FATAL => 'all'; use warnings FATAL => 'all';
use Path::Class 'file';
use FindBin;
FindBin::again();
our $home;
# try really hard to find a localenv if one isn't already in place.
BEGIN { BEGIN {
$home = ($ENV{NETDISCO_HOME} || $ENV{HOME});
eval "use Daemon::Control"; eval "use Daemon::Control";
if ($@) { if ($@) {
exec(file($ENV{HOME}, 'bin', 'localenv'), $0, @ARGV); use File::Spec;
my $localenv = File::Spec->catfile($FindBin::RealBin, 'localenv');
exec($localenv, $0, @ARGV) if -f $localenv;
$localenv = File::Spec->catfile($home, 'perl5', 'bin', 'localenv');
exec($localenv, $0, @ARGV) if -f $localenv;
die "Sorry, can't find libs required for App::Netdisco.\n";
} }
} }
use Path::Class; use Path::Class;
my $log_dir = dir($ENV{HOME}, 'logs');
mkdir $log_dir if ! -d $log_dir;
my $program = file($ENV{HOME}, 'bin', 'netdisco-daemon-fg'); my $netdisco = file($FindBin::RealBin, 'netdisco-daemon-fg');
my @args = (scalar @ARGV > 1 ? @ARGV[1 .. $#ARGV] : ());
my $log_dir = dir($home, 'logs');
mkdir $log_dir if ! -d $log_dir;
Daemon::Control->new({ Daemon::Control->new({
name => 'Netdisco Daemon', name => 'Netdisco Daemon',
program => ($ENV{NETDISCO_DAEMON} || $program), program => $netdisco,
pid_file => file($ENV{HOME}, 'netdisco-daemon.pid'), program_args => [@args],
pid_file => file($home, 'netdisco-daemon.pid'),
stderr_file => file($log_dir, 'netdisco-daemon.log'), stderr_file => file($log_dir, 'netdisco-daemon.log'),
stdout_file => file($log_dir, 'netdisco-daemon.log'), stdout_file => file($log_dir, 'netdisco-daemon.log'),
})->run; })->run;

View File

@@ -6,17 +6,31 @@ use warnings FATAL => 'all';
use FindBin; use FindBin;
FindBin::again(); FindBin::again();
use Path::Class; our $home;
use Daemon::Control;
# try really hard to find a localenv if one isn't already in place.
BEGIN {
$home = ($ENV{NETDISCO_HOME} || $ENV{HOME});
eval "use Daemon::Control";
if ($@) {
use File::Spec;
my $localenv = File::Spec->catfile($FindBin::RealBin, 'localenv');
exec($localenv, $0, @ARGV) if -f $localenv;
$localenv = File::Spec->catfile($home, 'perl5', 'bin', 'localenv');
exec($localenv, $0, @ARGV) if -f $localenv;
die "Sorry, can't find libs required for App::Netdisco.\n";
}
}
use Path::Class;
my $home = ($ENV{NETDISCO_HOME} || $ENV{HOME});
my $netdisco = file($FindBin::RealBin, 'netdisco-web-fg'); my $netdisco = file($FindBin::RealBin, 'netdisco-web-fg');
my @args = (scalar @ARGV > 1 ? @ARGV[1 .. $#ARGV] : ());
my $log_dir = dir($home, 'logs'); my $log_dir = dir($home, 'logs');
mkdir $log_dir if ! -d $log_dir; mkdir $log_dir if ! -d $log_dir;
my @args = (scalar @ARGV > 1 ? @ARGV[1 .. $#ARGV] : ());
Daemon::Control->new({ Daemon::Control->new({
name => 'Netdisco Web', name => 'Netdisco Web',
program => 'plackup', program => 'plackup',