SYNOPSIS
use Mojo::Home;
# Find and manage the project root directory
my $home = Mojo::Home->new;
$home->detect;
say $home->lib_dir;
say $home->rel_file('templates/layouts/default.html.ep');
say "$home";
DESCRIPTION
Mojo::Home is a container for home directories.ATTRIBUTES
Mojo::Home implements the following attributes.parts
my $parts = $home->parts; $home = $home->parts(['home', 'sri', 'myapp']);
Home directory parts.
METHODS
Mojo::Home inherits all methods from Mojo::Base and implements the following new ones.detect
$home = $home->detect; $home = $home->detect('My::App');
Detect home directory from the value of the "MOJO_HOME" environment variable, location of the application class, or the current working directory.
lib_dir
my $path = $home->lib_dir;
Path to "lib" directory of application.
list_files
my $files = $home->list_files; my $files = $home->list_files('foo/bar'); my $files = $home->list_files('foo/bar', {hidden => 1});
Portably list all files recursively in directory relative to the home directory.
# List layouts say $home->rel_file($_) for @{$home->list_files('templates/layouts')};
These options are currently available:
- hidden
-
hidden => 1
Include hidden files and directories.
mojo_lib_dir
my $path = $home->mojo_lib_dir;
Path to "lib" directory in which Mojolicious is installed.
new
my $home = Mojo::Home->new; my $home = Mojo::Home->new('/home/sri/my_app');
Construct a new Mojo::Home object and ``parse'' home directory if necessary.
parse
$home = $home->parse('/home/sri/my_app');
Parse home directory.
rel_dir
my $path = $home->rel_dir('foo/bar');
Portably generate an absolute path for a directory relative to the home directory.
rel_file
my $path = $home->rel_file('foo/bar.html');
Portably generate an absolute path for a file relative to the home directory.
to_string
my $str = $home->to_string;
Home directory.
OPERATORS
Mojo::Home overloads the following operators.bool
my $bool = !!$home;
Always true.
stringify
my $str = "$home";
Alias for ``to_string''.