NAME
    Sah::Schemas::Path - Schemas related to filesystem path

VERSION
    This document describes version 0.017 of Sah::Schemas::Path (from Perl
    distribution Sah-Schemas-Path), released on 2023-08-11.

SAH SCHEMAS
    The following schemas are included in this distribution:

    *   dirname

        Filesystem directory name.

        This schema is basically string with some checks and prefilters. Why
        use this schema instead of plain ol' str? Mainly to give you the
        ability to change tilde to user's home directory, e.g. "~/foo" into
        "/home/someuser/foo". Normally this expansion is done by a Unix
        shell, but sometimes your program receives an unexpanded path, e.g.
        when you get it from some config file.

        See also more OS-specific schemas like "dirname::unix", which adds
        some more checks (e.g. filename cannot contain forward slash and
        each component cannot be longer than 255 characters) and
        preprocessing (e.g. stripping extraneous slashes like "foo//bar"
        into "foo/bar".

        What's the difference between this schema and "filename"? The
        default completion rule. This schema's completion by default only
        includes directories.

    *   dirname::exists

        Directory name, must exist on filesystem.

    *   dirname::unix

        Filesystem directory name on a Unix system.

    *   dirnames::exist

        List of directory names, all must exist on filesystem.

    *   filename

        Filesystem file name.

        This schema is basically string with some checks and prefilters. Why
        use this schema instead of plain ol' str? Mainly to give you the
        ability to change tilde to user's home directory, e.g. "~/foo.txt"
        into "/home/someuser/foo.txt". Normally this expansion is done by a
        Unix shell, but sometimes your program receives an unexpanded path,
        e.g. when you get it from some config file.

        See also more OS-specific schemas like "filename::unix", which adds
        some more checks (e.g. filename cannot contain forward slash and
        each component cannot be longer than 255 characters) and
        preprocessing (e.g. stripping extraneous slashes like "foo//bar"
        into "foo/bar".

        What's the difference between this schema and "dirname"? The default
        completion rule. This schema's completion by default only includes
        files and not directories.

    *   filename::exists

        File name, must exist on filesystem.

    *   filename::unix

        Filesystem file name on a Unix system.

    *   filenames

        List of filesystem file names.

        Coerces from string by expanding the glob pattern in the string.

    *   filenames::exist

        List of file names, all must exist on filesystem.

    *   pathname

        Filesystem path name.

        This schema is basically string with some checks and prefilters. Why
        use this schema instead of plain ol' str? Mainly to give you the
        ability to change tilde to user's home directory, e.g. "~/foo" into
        "/home/someuser/foo". Normally this expansion is done by a Unix
        shell, but sometimes your program receives an unexpanded path, e.g.
        when you get it from some config file.

        See also more OS-specific schemas like "pathname::unix", which adds
        some more checks (e.g. pathname cannot contain forward slash and
        each component cannot be longer than 255 characters) and
        preprocessing (e.g. stripping extraneous slashes like "foo//bar"
        into "foo/bar".

        What's the difference between this schema and "filename" and
        "dirname"? The default completion rule. This schema's completion by
        default includes files as well as directories.

    *   pathname::exists

        Path name, must exist on filesystem.

    *   pathname::unix

        Filesystem path name on a Unix system.

    *   pathnames

        List of filesystem path names.

        Coerces from string by expanding the glob pattern in the string.

    *   pathnames::exist

        List of path names, all must exist on filesystem.

HOMEPAGE
    Please visit the project's homepage at
    <https://metacpan.org/release/Sah-Schemas-Path>.

SOURCE
    Source repository is at
    <https://github.com/perlancar/perl-Sah-Schemas-Path>.

SEE ALSO
    Sah - schema specification

    Data::Sah - Perl implementation of Sah

AUTHOR
    perlancar <perlancar@cpan.org>

CONTRIBUTOR
    Gabor Szabo <gabor@szabgab.com>

CONTRIBUTING
    To contribute, you can send patches by email/via RT, or send pull
    requests on GitHub.

    Most of the time, you don't need to build the distribution yourself. You
    can simply modify the code, then test via:

     % prove -l

    If you want to build the distribution (e.g. to try to install it locally
    on your system), you can install Dist::Zilla,
    Dist::Zilla::PluginBundle::Author::PERLANCAR,
    Pod::Weaver::PluginBundle::Author::PERLANCAR, and sometimes one or two
    other Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps
    required beyond that are considered a bug and can be reported to me.

COPYRIGHT AND LICENSE
    This software is copyright (c) 2023, 2020, 2019, 2018, 2016 by perlancar
    <perlancar@cpan.org>.

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

BUGS
    Please report any bugs or feature requests on the bugtracker website
    <https://rt.cpan.org/Public/Dist/Display.html?Name=Sah-Schemas-Path>

    When submitting a bug or request, please include a test-file or a patch
    to an existing test-file that illustrates the bug or desired feature.

