XAS

 view release on metacpan or  search on metacpan

lib/XAS/Lib/Modules/Environment.pm  view on Meta::CPAN

        $self->{'spool'} = Dir(defined($ENV{'XAS_SPOOL'}) 
            ? $ENV{'XAS_SPOOL'} 
            : [$self->{root}, 'var', 'spool']);

        $self->{'mxmailer'}  = defined($ENV{'XAS_MXMAILER'}) 
            ? $ENV{'XAS_MXMAILER'} 
            : 'smtp';

        $self->{'username'} = Win32::LoginName();

    } else {

        # this assumes a unix like working environment

        $self->{'host'} = defined($ENV{'XAS_HOSTNAME'}) 
            ? $ENV{'XAS_HOSTNAME'} 
            : `hostname -s`;

        chomp($self->{'host'});

        $self->{'root'} = Dir(defined($ENV{'XAS_ROOT'}) 
            ? $ENV{'XAS_ROOT'} 
            : ['/']);

        $self->{'etc'} = Dir(defined($ENV{'XAS_ETC'})   
            ? $ENV{'XAS_ETC'}   
            : [$self->{root}, 'etc', 'xas']);

        $self->{'tmp'} = Dir(defined($ENV{'XAS_TMP'})   
            ? $ENV{'XAS_TMP'} 
            : ['/', 'tmp']);

        $self->{'var'} = Dir(defined($ENV{'XAS_VAR'})   
            ? $ENV{'XAS_VAR'}   
            : [$self->{root}, 'var']);

        $self->{'lib'} = Dir(defined($ENV{'XAS_LIB'})   
            ? $ENV{'XAS_LIB'}   
            : [$self->{root}, 'var', 'lib', 'xas']);

        $self->{'log'} = Dir(defined($ENV{'XAS_LOG'})   
            ? $ENV{'XAS_LOG'}   
            : [$self->{root}, 'var', 'log', 'xas']);

        $self->{'locks'} = Dir(defined($ENV{'XAS_LOCKS'})   
            ? $ENV{'XAS_LOCKS'}   
            : [$self->{root}, 'var', 'lock', 'xas']);

        $self->{'run'} = Dir(defined($ENV{'XAS_RUN'})   
            ? $ENV{'XAS_RUN'}   
            : [$self->{root}, 'var', 'run', 'xas']);

        $self->{'spool'} = Dir(defined($ENV{'XAS_SPOOL'}) 
            ? $ENV{'XAS_SPOOL'} 
            : [$self->{root}, 'var', 'spool', 'xas']);

        $self->{'mxmailer'}  = defined($ENV{'XAS_MXMAILER'}) 
          ? $ENV{'XAS_MXMAILER'} 
          : 'sendmail';

        $self->{'username'} = getpwuid($<);

    }

    # build some common paths

    $self->{'sbin'} = Dir(defined($ENV{'XAS_SBIN'})  
        ? $ENV{'XAS_SBIN'}  
        : [$self->{'root'}, 'sbin']);

    $self->{'bin'} = Dir(defined($ENV{'XAS_BIN'})   
        ? $ENV{'XAS_BIN'}   
        : [$self->{'root'}, 'bin']);

    # define some logging options

    $self->{'log_type'} = defined($ENV{'XAS_LOG_TYPE'})
        ? $ENV{'XAS_LOG_TYPE'}
        : 'console';

    $self->{'log_facility'} = defined($ENV{'XAS_LOG_FACILITY'})
        ? $ENV{'XAS_LOG_FACILITY'}
        : 'local6';

    # create some common file names

    ($name, $path, $suffix) = fileparse($0, qr{\..*});

    $self->{'log_file'} = File($self->{'log'}, $name . '.log');
    $self->{'pid_file'} = File($self->{'run'}, $name . '.pid');
    $self->{'cfg_file'} = File($self->{'etc'}, $name . '.ini');

    # build some methods, saves typing

    for my $datum (qw( log_file pid_file cfg_file )) {

        $self->class->methods($datum => sub {
            my $self = shift;
            my ($p) = validate_params(\@_, [
                    {optional => 1, default => undef, isa => 'Badger::Filesystem::File' }
                ],
                "xas.lib.modules.environment.$datum"
            );

            $self->{$datum} = $p if (defined($p));

            return $self->{$datum};

        });

    }

    for my $datum (qw( root etc sbin tmp var bin lib log locks run spool )) {

        $self->class->methods($datum => sub {
            my $self = shift;
            my ($p) = validate_params(\@_, [
                    {optional => 1, default => undef, isa => 'Badger::Filesystem::Directory'}
                ],
                "xas.lib.modules.environment.$datum"
            );



( run in 1.555 second using v1.01-cache-2.11-cpan-39bf76dae61 )