29 lines
703 B
JavaScript
29 lines
703 B
JavaScript
|
'use strict';
|
||
|
|
||
|
var path = require('path');
|
||
|
var extend = require('extend-shallow');
|
||
|
|
||
|
module.exports = function(glob, options) {
|
||
|
var opts = extend({}, options);
|
||
|
opts.cwd = opts.cwd ? path.resolve(opts.cwd) : process.cwd();
|
||
|
|
||
|
// store first and last characters before glob is modified
|
||
|
var prefix = glob.charAt(0);
|
||
|
var suffix = glob.slice(-1);
|
||
|
|
||
|
var isNegative = prefix === '!';
|
||
|
if (isNegative) glob = glob.slice(1);
|
||
|
|
||
|
if (opts.root && glob.charAt(0) === '/') {
|
||
|
glob = path.join(path.resolve(opts.root), '.' + glob);
|
||
|
} else {
|
||
|
glob = path.resolve(opts.cwd, glob);
|
||
|
}
|
||
|
|
||
|
if (suffix === '/' && glob.slice(-1) !== '/') {
|
||
|
glob += '/';
|
||
|
}
|
||
|
|
||
|
return isNegative ? '!' + glob : glob;
|
||
|
};
|