Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/kentnl/path-finddev
- Owner: kentnl
- License: other
- Created: 2013-07-06T16:15:24.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2017-03-10T07:05:43.000Z (over 7 years ago)
- Last Synced: 2024-06-18T19:59:35.700Z (5 months ago)
- Language: Perl
- Size: 343 KB
- Stars: 1
- Watchers: 2
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.mkdn
- Changelog: Changes
- License: LICENSE
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.