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 )