47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
package App::Netdisco::Environment;
 | 
						|
 | 
						|
use strict;
 | 
						|
use warnings;
 | 
						|
 | 
						|
use File::ShareDir 'dist_dir';
 | 
						|
use Path::Class;
 | 
						|
use FindBin;
 | 
						|
 | 
						|
BEGIN {
 | 
						|
  if (not ($ENV{DANCER_APPDIR} || '')
 | 
						|
      or not -f file($ENV{DANCER_APPDIR}, 'config.yml')) {
 | 
						|
 | 
						|
      FindBin::again();
 | 
						|
      my $me = File::Spec->catfile($FindBin::RealBin, $FindBin::RealScript);
 | 
						|
      my $uid = (stat($me))[4] || 0;
 | 
						|
      my $home = ($ENV{NETDISCO_HOME} || (getpwuid($uid))[7] || $ENV{HOME});
 | 
						|
      $ENV{NETDISCO_HOME} ||= $home;
 | 
						|
 | 
						|
      my $auto = dir(dist_dir('App-Netdisco'))->absolute;
 | 
						|
 | 
						|
      $ENV{DANCER_APPDIR}  ||= $auto->stringify;
 | 
						|
      $ENV{DANCER_CONFDIR} ||= $auto->stringify;
 | 
						|
 | 
						|
      my $test_envdir = dir($home, 'environments')->stringify;
 | 
						|
      $ENV{DANCER_ENVDIR} ||= (-d $test_envdir
 | 
						|
        ? $test_envdir : $auto->subdir('environments')->stringify);
 | 
						|
 | 
						|
      $ENV{DANCER_ENVIRONMENT} ||= 'deployment';
 | 
						|
      $ENV{PLACK_ENV} ||= $ENV{DANCER_ENVIRONMENT};
 | 
						|
 | 
						|
      $ENV{DANCER_PUBLIC} ||= $auto->subdir('public')->stringify;
 | 
						|
      $ENV{DANCER_VIEWS}  ||= $auto->subdir('views')->stringify;
 | 
						|
  }
 | 
						|
 | 
						|
  {
 | 
						|
      # Dancer 1 uses the broken YAML.pm module
 | 
						|
      # This is a global sledgehammer - could just apply to Dancer::Config
 | 
						|
      use YAML;
 | 
						|
      use YAML::XS;
 | 
						|
      no warnings 'redefine';
 | 
						|
      *YAML::LoadFile = sub { goto \&YAML::XS::LoadFile };
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
1;
 |