File-XDG

 view release on metacpan or  search on metacpan

lib/File/XDG.pm  view on Meta::CPAN

    if($^O eq 'MSWin32') {
        my $local = Win32::GetFolderPath(Win32::CSIDL_LOCAL_APPDATA(), 1);
        $self->{home}        = $local;
        $self->{data}        = $ENV{XDG_DATA_HOME}   || "$local\\.local\\share\\";
        $self->{cache}       = $ENV{XDG_CACHE_HOME}  || "$local\\.cache\\";
        $self->{config}      = $ENV{XDG_CONFIG_HOME} || "$local\\.config\\";
        $self->{state}       = $ENV{XDG_STATE_HOME}  || "$local\\.local\\state\\";
        $self->{data_dirs}   = $ENV{XDG_DATA_DIRS}   || '';
        $self->{config_dirs} = $ENV{XDG_CONFIG_DIRS} || '';
    } else {
        my $home = $ENV{HOME} || [getpwuid($>)]->[7];
        $self->{home}        = $home;
        $self->{data}        = $ENV{XDG_DATA_HOME}   || "$home/.local/share/";
        $self->{cache}       = $ENV{XDG_CACHE_HOME}  || "$home/.cache/";
        $self->{state}       = $ENV{XDG_STATE_HOME}  || "$home/.local/state/";
        $self->{config}      = $ENV{XDG_CONFIG_HOME} || "$home/.config/";
        $self->{data_dirs}   = $ENV{XDG_DATA_DIRS}   || '/usr/local/share:/usr/share';
        $self->{config_dirs} = $ENV{XDG_CONFIG_DIRS} || '/etc/xdg';
    }

    return $self;

t/file_xdg.t  view on Meta::CPAN

use File::XDG;
use File::Temp;
use File::Spec;
use Config;
use Path::Class qw( dir );
use Path::Tiny qw( path );
use File::Path qw(make_path);
use if $^O eq 'MSWin32', 'Win32';

our $base = $^O ne 'MSWin32'
  ? $ENV{HOME} || [getpwuid($>)]->[7]
  : Win32::GetFolderPath(Win32::CSIDL_LOCAL_APPDATA(), 1);

subtest 'env' => sub {
  local %ENV = %ENV;
  $ENV{XDG_CONFIG_HOME} = '/home/user/.config';
  $ENV{XDG_DATA_HOME} = '/home/user/.local/share';
  $ENV{XDG_CACHE_HOME} = '/home/user/.cache';
  $ENV{XDG_DATA_DIRS} = "/usr/local/share$Config{path_sep}/usr/share";
  $ENV{XDG_CONFIG_DIRS} = "/etc/xdg$Config{path_sep}/foo/bar";
  local $base = "/home/user";



( run in 0.263 second using v1.01-cache-2.11-cpan-8d75d55dd25 )