aboutsummaryrefslogtreecommitdiff
path: root/node_modules/findup-sync
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/findup-sync')
-rw-r--r--node_modules/findup-sync/README.md67
-rw-r--r--node_modules/findup-sync/index.js85
-rw-r--r--node_modules/findup-sync/package.json50
3 files changed, 202 insertions, 0 deletions
diff --git a/node_modules/findup-sync/README.md b/node_modules/findup-sync/README.md
new file mode 100644
index 000000000..c8c4a0b47
--- /dev/null
+++ b/node_modules/findup-sync/README.md
@@ -0,0 +1,67 @@
+# findup-sync [![Build Status](https://travis-ci.org/js-cli/node-findup-sync.svg)](https://travis-ci.org/js-cli/node-findup-sync) [![NPM version](https://badge.fury.io/js/findup-sync.svg)](http://badge.fury.io/js/findup-sync)
+
+> Find the first file matching a given pattern in the current directory or the nearest ancestor directory.
+
+Matching is done with [micromatch][], please report any matching related issues on that repository.
+
+## Install with [npm](npmjs.org)
+
+```bash
+npm i findup-sync --save
+```
+
+## Usage
+
+```js
+var findup = require('findup-sync');
+findup(patternOrPatterns [, micromatchOptions]);
+
+// Start looking in the CWD.
+var filepath1 = findup('{a,b}*.txt');
+
+// Start looking somewhere else, and ignore case (probably a good idea).
+var filepath2 = findup('{a,b}*.txt', {cwd: '/some/path', nocase: true});
+```
+
+* `patterns` **{String|Array}**: Glob pattern(s) or file path(s) to match against.
+* `options` **{Object}**: Options to pass to [micromatch]. Note that if you want to start in a different directory than the current working directory, specify a `cwd` property here.
+* `returns` **{String}**: Returns the first matching file.
+
+## Running tests
+
+Install dev dependencies:
+
+```bash
+npm i -d && npm test
+```
+
+## Contributing
+
+In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/)
+
+For bugs and feature requests, [please create an issue](https://github.com/cowboy/node-findup-sync/issues).
+
+## Release History
+
+2015-01-30 - v0.4.0 - Refactored, not also uses [micromatch][] instead of minimatch.
+2015-09-14 - v0.3.0 - updated glob to ~5.0.
+2014-12-17 - v0.2.1 - Updated to glob 4.3.
+2014-12-16 - v0.2.0 - Removed lodash, updated to glob 4.x.
+2014-03-14 - v0.1.3 - Updated dependencies.
+2013-03-08 - v0.1.2 - Updated dependencies. Fixed a Node 0.9.x bug. Updated unit tests to work cross-platform.
+2012-11-15 - v0.1.1 - Now works without an options object.
+2012-11-01 - v0.1.0 - Initial release.
+
+## Authors
+
+**"Cowboy" Ben Alman**
+
++ [github/cowboy](https://github.com/cowboy)
++ [twitter/cowboy](http://twitter.com/cowboy)
+
+## License
+
+Copyright (c) 2012-2016 "Cowboy" Ben Alman
+Released under the MIT license
+
+[micromatch]: http://github.com/jonschlinkert/micromatch
diff --git a/node_modules/findup-sync/index.js b/node_modules/findup-sync/index.js
new file mode 100644
index 000000000..b84349575
--- /dev/null
+++ b/node_modules/findup-sync/index.js
@@ -0,0 +1,85 @@
+'use strict';
+
+/**
+ * Module dependencies
+ */
+
+var fs = require('fs');
+var path = require('path');
+var isGlob = require('is-glob');
+var resolveDir = require('resolve-dir');
+var detect = require('detect-file');
+var mm = require('micromatch');
+
+/**
+ * @param {String|Array} `pattern` Glob pattern or file path(s) to match against.
+ * @param {Object} `options` Options to pass to [micromatch]. Note that if you want to start in a different directory than the current working directory, specify the `options.cwd` property here.
+ * @return {String} Returns the first matching file.
+ * @api public
+ */
+
+module.exports = function(patterns, options) {
+ options = options || {};
+ var cwd = path.resolve(resolveDir(options.cwd || ''));
+
+ if (typeof patterns === 'string') {
+ return lookup(cwd, [patterns], options);
+ }
+
+ if (!Array.isArray(patterns)) {
+ throw new TypeError('findup-sync expects a string or array as the first argument.');
+ }
+
+ return lookup(cwd, patterns, options);
+};
+
+function lookup(cwd, patterns, options) {
+ var len = patterns.length;
+ var idx = -1;
+ var res;
+
+ while (++idx < len) {
+ if (isGlob(patterns[idx])) {
+ res = matchFile(cwd, patterns[idx], options);
+ } else {
+ res = findFile(cwd, patterns[idx], options);
+ }
+ if (res) {
+ return res;
+ }
+ }
+
+ var dir = path.dirname(cwd);
+ if (dir === cwd) {
+ return null;
+ }
+ return lookup(dir, patterns, options);
+}
+
+function matchFile(cwd, pattern, opts) {
+ var isMatch = mm.matcher(pattern, opts);
+ var files = tryReaddirSync(cwd);
+ var len = files.length;
+ var idx = -1;
+
+ while (++idx < len) {
+ var name = files[idx];
+ var fp = path.join(cwd, name);
+ if (isMatch(name) || isMatch(fp)) {
+ return fp;
+ }
+ }
+ return null;
+}
+
+function findFile(cwd, filename, options) {
+ var fp = cwd ? path.resolve(cwd, filename) : filename;
+ return detect(fp, options);
+}
+
+function tryReaddirSync(fp) {
+ try {
+ return fs.readdirSync(fp);
+ } catch(err) {}
+ return [];
+}
diff --git a/node_modules/findup-sync/package.json b/node_modules/findup-sync/package.json
new file mode 100644
index 000000000..7068dd0eb
--- /dev/null
+++ b/node_modules/findup-sync/package.json
@@ -0,0 +1,50 @@
+{
+ "name": "findup-sync",
+ "description": "Find the first file matching a given pattern in the current directory or the nearest ancestor directory.",
+ "version": "0.4.3",
+ "homepage": "https://github.com/cowboy/node-findup-sync",
+ "author": "\"Cowboy\" Ben Alman (http://benalman.com)",
+ "repository": "cowboy/node-findup-sync",
+ "bugs": {
+ "url": "https://github.com/cowboy/node-findup-sync/issues"
+ },
+ "license": "MIT",
+ "files": [
+ "index.js"
+ ],
+ "main": "index.js",
+ "engines": {
+ "node": ">= 0.8.0"
+ },
+ "scripts": {
+ "test": "grunt && mocha"
+ },
+ "dependencies": {
+ "detect-file": "^0.1.0",
+ "is-glob": "^2.0.1",
+ "micromatch": "^2.3.7",
+ "resolve-dir": "^0.1.0"
+ },
+ "devDependencies": {
+ "fs-exists-sync": "^0.1.0",
+ "grunt": "^1.0.1",
+ "grunt-contrib-jshint": "^0.12.0",
+ "is-absolute": "^0.2.3",
+ "minimist": "^1.2.0",
+ "mocha": "^2.4.5",
+ "normalize-path": "^2.0.1",
+ "os-homedir": "^1.0.1",
+ "resolve": "^1.1.7"
+ },
+ "keywords": [
+ "file",
+ "find",
+ "find-up",
+ "findup",
+ "glob",
+ "match",
+ "pattern",
+ "resolve",
+ "search"
+ ]
+}