NAME

Mojo::Home - Home sweet home

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".

SEE ALSO

Mojolicious, Mojolicious::Guides, http://mojolicious.org.