Mojo-File-Role-HomeDir
view release on metacpan or search on metacpan
lib/Mojo/File/Role/HomeDir.pm view on Meta::CPAN
use Role::Tiny;
use File::HomeDir;
use strict;
$\ = "\n"; $, = "\t";
my @subs = qw/
my_home
my_desktop
my_documents
my_music
my_pictures
my_videos
my_data
my_dist_config
my_dist_data
users_home
users_documents
users_data
users_desktop
users_music
users_pictures
users_videos
/;
for my $name (grep { /^my_/ } @subs) {
monkey_patch(__PACKAGE__, $name => sub { return shift()->new(File::HomeDir->$name, @_) });
};
lib/Mojo/File/Role/HomeDir.pm view on Meta::CPAN
=head1 SYNOPSIS
use Mojo::File;
use Mojo::File::Role::HomeDir;
my $file = Mojo::File->new->with_roles('+Mojo::File::Role::HomeDir');
# Use the methods provided by File::HomeDir:
my $home_dir = $file->my_home;
my $desktop_dir = $file->my_desktop;
my $documents_dir = $file->my_documents;
# ... and others
=head1 DESCRIPTION
This role adds a collection of directory-related methods from L<File::HomeDir>
to L<Mojo::File> objects. Each method returns a new Mojo::File object pointing
to the directory path provided by File::HomeDir.
The following methods are added:
=over 4
=item * my_home
=item * my_desktop
=item * my_documents
=item * my_music
=item * my_pictures
=item * my_videos
=item * my_data
lib/Mojo/File/Role/HomeDir.pm view on Meta::CPAN
=item * my_dist_config
=item * my_dist_data
=item * users_home
=item * users_documents
=item * users_data
=item * users_desktop
=item * users_music
=item * users_pictures
=item * users_videos
=back
=head1 METHODS
use Mojo::File qw/path/;
use File::HomeDir;
use Test::More;
my $user = getlogin() || $ENV{USER} || $ENV{LOGNAME} || getpwuid($<);
my $p = path()->with_roles("+HomeDir");
my @subs = qw/
my_home
my_desktop
my_documents
my_music
my_pictures
my_videos
my_data
my_dist_config
my_dist_data
users_home
users_documents
users_data
users_desktop
users_music
users_pictures
users_videos
/;
for my $sub (grep { /^my/ && !/^my_dist/} @subs) {
SKIP: {
my $expected = eval { File::HomeDir->$sub };
if ($@ || !defined $expected) {
skip("'$sub' $@" =~ s/\ at.+//mrs, 1);
next;
( run in 0.429 second using v1.01-cache-2.11-cpan-299005ec8e3 )