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;
 |