logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Path::FindDev - Find a development path somewhere in an upper hierarchy.

Author

       Kent Fredric <kentnl@cpan.org>

Description

       This package is mostly a glue layer around "Path::IsDev" with a few directory walking tricks.

           use Path::FindDev qw( find_dev );

           if ( my $root = find_dev('/some/path/to/something/somewhere')) {
               print "development root = $root";
           } else {
               print "No development root :(";
           }

Example Use-Cases

       Have you ever found yourself doing

           use FindBin;
           use lib "$FindBin::Bin/../../../tlib"

       In a test?

       Have you found yourself paranoid of file-system semantics and tried

           use FindBin;
           use Path::Tiny qw(path)
           use lib path($FindBin::Bin)->parent->parent->parent->child('tlib')->stringify;

       Have you ever done either of the above in a test, only to find you've needed to move the test to a deeper
       hierarchy, and thus, need to re-write all your path resolution?

       Have you ever had this problem for multiple files?

       No more!

           use FindBin;
           use Path::FindDev qw(find_dev);
           use lib find_dev($FindBin::Bin)->child('t','tlib')->stringify;

       ^ Should work, regardless of which test you put it in, and regardless of what $CWD happens to be when you
       call it.

Functions

find_dev
           my $result = find_dev('/some/path');

       If a "dev" directory is found at, or above, "/some/path", it will be returned as a "Path::Tiny"

       If you pass configurations to import:

           use Path::FindDev find_dev => { set => $someset };

       Then the exported "find_dev" will pass that set name to "Path::IsDev".

       Though you should only do this if

       •   the default set is inadequate for your usage

       •   you don't want the set to be overridden by %ENV

       Additionally, you can call find_dev directly:

           require Path::FindDev;

           my $result = Path::FindDev::find_dev('/some/path');

       Which by design inhibits your capacity to specify an alternative set in code.

Name

       Path::FindDev - Find a development path somewhere in an upper hierarchy.

Version

       version v0.5.3

See Also