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 )