# NAME

Path::Maker - make files and directories as scaffolding

# SYNOPSIS

    use Path::Maker;

    my $maker = Path::Maker->new(base_dir => $ENV{HOME});
    $maker->render_to_file('gitconfig.mt' => '.gitconfig', $ENV{USER});
    $maker->create_dir('.swap');
    $maker->write_file('.vimrc', "set directory=~/.swap\n");
    $maker->chmod('.ssh/id_rsa', 0400);

    __DATA__

    @@ gitconfig.mt
    [user]
        name = <?= $_[0] ?>

# DESCRIPTION

Path::Maker helps you make files or directories
as scaffolding.
When I wrote a CLI script for mojo,
I found that [Mojolicious::Command](https://metacpan.org/pod/Mojolicious::Command) is very useful.
This module provides some functionality of that module with
template syntax [Text::MicroTemplate](https://metacpan.org/pod/Text::MicroTemplate).

## CONSTRUCTOR

Constructor `$maker = Path::Maker->new(%options)` accepts following options:

- base\_dir

    If relative path is specified to methods `chmod`, `create_dir`,
    `render_to_file` or `write_file`, then it is assumed to relative to the `base_dir`.
    Default: current working directory.

- package

    Whose `__DATA__` section to be read.
    Default: `caller`.

- template\_header

    If `template_header` is provided, it is inserted to every template files.
    See `eg/template-header.pl` for example.

- template\_dir

    By default, Path::Maker searches for template files in
    `__DATA__` section.
    If `template_dir` is provided, it also searches for template files in
    `template_dir`. See `eg/module-scaffold.pl` for example.

## METHOD

- `$maker->chmod($path, $mode)`

    Change permission of `$path`.

- `$maker->create_dir($dir)`

    Create directory `$dir`.

- `$string = $maker->render($template_name, @arg)`

    Render `$template_name` with `@arg`.

- `$maker->render_to_file($template_name, $file, @arg)`

    Render `$template_name` to `$file` with `@arg`.

- `$maker->write_file($file, $string)`

    Write `$string` to `$file`.

# SEE ALSO

[Mojolicious::Command](https://metacpan.org/pod/Mojolicious::Command)

[Text::MicroTemplate](https://metacpan.org/pod/Text::MicroTemplate)

[Text::MicroTemplate::DataSection](https://metacpan.org/pod/Text::MicroTemplate::DataSection)

# LICENSE

Copyright (C) Shoichi Kaji.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

# AUTHOR

Shoichi Kaji <skaji@outlook.com>