use
5.005;
BEGIN {
$VERSION
=
'0.65'
;
}
eval
"use prefork 'Mac::Files'"
;
sub
my_home {
my
(
$class
) =
@_
;
$class
->_find_folder(
Mac::Files::kCurrentUserFolderType(),
);
}
sub
my_desktop {
my
(
$class
) =
@_
;
$class
->_find_folder(
Mac::Files::kDesktopFolderType(),
);
}
sub
my_documents {
my
(
$class
) =
@_
;
$class
->_find_folder(
Mac::Files::kDocumentsFolderType(),
);
}
sub
my_data {
my
(
$class
) =
@_
;
$class
->_find_folder(
Mac::Files::kApplicationSupportFolderType(),
);
}
sub
my_music {
my
(
$class
) =
@_
;
$class
->_find_folder(
Mac::Files::kMusicDocumentsFolderType(),
);
}
sub
my_pictures {
my
(
$class
) =
@_
;
$class
->_find_folder(
Mac::Files::kPictureDocumentsFolderType(),
);
}
sub
my_videos {
my
(
$class
) =
@_
;
$class
->_find_folder(
Mac::Files::kMovieDocumentsFolderType(),
);
}
sub
_find_folder {
my
(
$class
,
$name
) =
@_
;
my
$folder
= Mac::Files::FindFolder(
Mac::Files::kUserDomain(),
$name
,
);
return
$folder
unless
defined
$folder
;
return
Cwd::abs_path(
$folder
);
}
sub
users_home {
my
$class
=
shift
;
my
$home
=
$class
->SUPER::users_home(
@_
);
return
Cwd::abs_path(
$home
);
}
sub
users_desktop {
my
(
$class
,
$name
) =
@_
;
return
undef
if
$name
eq
'root'
;
$class
->_to_user(
$class
->my_desktop,
$name
);
}
sub
users_documents {
my
(
$class
,
$name
) =
@_
;
return
undef
if
$name
eq
'root'
;
$class
->_to_user(
$class
->my_documents,
$name
);
}
sub
users_data {
my
(
$class
,
$name
) =
@_
;
$class
->_to_user(
$class
->my_data,
$name
)
||
$class
->users_home(
$name
);
}
sub
_to_user {
my
(
$class
,
$path
,
$name
) =
@_
;
my
$my_home
=
$class
->my_home;
my
$users_home
=
$class
->users_home(
$name
);
$path
=~ s/^Q
$my_home
/
$users_home
/;
return
$path
;
}
1;
=pod
=head1 NAME
File::HomeDir::Darwin - find your home and other directories, on Darwin (OS X)
=head1 DESCRIPTION
This module provides Darwin-specific implementations
for
determining
common user directories. In normal usage this module will always be
used via L<File::HomeDir>.
=head1 SYNOPSIS
$home
= File::HomeDir->my_home;
$desktop
= File::HomeDir->my_desktop;
$docs
= File::HomeDir->my_documents;
$music
= File::HomeDir->my_music;
$pics
= File::HomeDir->my_pictures;
$videos
= File::HomeDir->my_videos;
$data
= File::HomeDir->my_data;
=head1 TODO
=over 4
=item * Fallback to Unix
if
no
Mac::Carbon available
=item * Test
with
Mac OS (versions 7, 8, 9)
=item * Some better way
for
users_* ?
=back