You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
703 B
28 lines
703 B
'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; |
|
};
|
|
|