Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kentnl/path-finddev

Find a development path somewhere in an upper hierarchy
https://github.com/kentnl/path-finddev

Last synced: 4 days ago
JSON representation

Find a development path somewhere in an upper hierarchy

Awesome Lists containing this project

README

        

# NAME

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

# VERSION

version v0.5.4

# DESCRIPTION

This package is mostly a glue layer around [`Path::IsDev`](https://metacpan.org/pod/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 :(";
}

# 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`](https://metacpan.org/pod/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`](https://metacpan.org/pod/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.

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

# AUTHOR

Kent Fredric

# COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Kent Fredric .

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