Config-Find
view release on metacpan or search on metacpan
lib/Config/Find/Unix.pm view on Meta::CPAN
package Config::Find::Unix;
use strict;
use warnings;
use Carp;
use File::HomeDir;
use Config::Find::Any;
our @ISA=qw(Config::Find::Any);
sub app_dir {
my ($class, $name)=@_;
$name=$class->guess_script_name
unless defined $name;
my $ename = uc($name).'_HOME';
return $ENV{$ename} if (exists $ENV{$ename});
$class->parent_dir($class->guess_script_dir);
}
sub _my_home {
my $home = File::HomeDir->my_home;
return $home if defined $home;
my ($user, $dir) = (getpwuid $>)[0, 7];
return $dir if defined $dir;
return "/home/$user" if defined $user;
return "/"
};
sub system_temp { '/tmp' }
sub _var_dir {
my ($class, $name, $more_name, $scope) = @_;
if ($scope eq 'global') {
$class->my_catfile('/var', $name, $more_name);
} elsif ($scope eq 'user') {
File::Spec->catfile(_my_home(), '.'.$name, 'var', $more_name);
} elsif ($scope eq 'app') {
$class->my_catfile($class->app_dir($name), 'var', $more_name);
} else {
croak "scope '$scope' is not valid for var_dir method";
}
}
sub _bin_dir {
my ($class, $name, $more_name, $scope) = @_;
if ($scope eq 'global') {
'/usr/bin';
} elsif ($scope eq 'user') {
File::Spec->catfile(_my_home(), 'bin');
} elsif ($scope eq 'app') {
File::Spec->catfile($class->app_dir($name), 'bin');
} else {
croak "scope '$scope' is not valid for bin_dir method";
}
}
sub _lib_dir {
my ($class, $name, $more_name, $scope) = @_;
if ($scope eq 'global') {
'/usr/lib';
} elsif ($scope eq 'user') {
File::Spec->catfile(_my_home(), 'lib');
} elsif ($scope eq 'app') {
File::Spec->catfile($class->app_dir($name), 'lib');
} else {
croak "scope '$scope' is not valid for lib_dir method";
}
}
sub look_for_file {
my ($class, $name, $write, $global)=@_;
my $fn;
if ($write) {
if ($global) {
my $fnwe=$class->add_extension($name, 'conf');
unless ($class->is_one_liner) {
my $etc=File::Spec->catfile($class->app_dir($name), 'etc');
( run in 2.411 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )