/usr/lib/nodejs/to-absolute-glob/index.js is in node-to-absolute-glob 2.0.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | 'use strict';
var path = require('path');
var extend = require('extend-shallow');
var isNegated = require('is-negated-glob');
var isAbsolute = path.isAbsolute;
module.exports = function(glob, options) {
// shallow clone options
var opts = extend({}, options);
// ensure cwd is absolute
var cwd = path.resolve(opts.cwd ? opts.cwd : process.cwd());
cwd = unixify(cwd);
var rootDir = opts.root;
// if `options.root` is defined, ensure it's absolute
if (rootDir) {
rootDir = unixify(rootDir);
if (process.platform === 'win32' || !isAbsolute(rootDir)) {
rootDir = unixify(path.resolve(rootDir));
}
}
// trim starting ./ from glob patterns
if (glob.slice(0, 2) === './') {
glob = glob.slice(2);
}
// when the glob pattern is only a . use an empty string
if (glob.length === 1 && glob === '.') {
glob = '';
}
// store last character before glob is modified
var suffix = glob.slice(-1);
// check to see if glob is negated (and not a leading negated-extglob)
var ing = isNegated(glob);
glob = ing.pattern;
// make glob absolute
if (rootDir && glob.charAt(0) === '/') {
glob = join(rootDir, glob);
} else if (!isAbsolute(glob) || glob.slice(0, 1) === '\\') {
glob = join(cwd, glob);
}
// if glob had a trailing `/`, re-add it now in case it was removed
if (suffix === '/' && glob.slice(-1) !== '/') {
glob += '/';
}
// re-add leading `!` if it was removed
return ing.negated ? '!' + glob : glob;
};
function unixify(filepath) {
return filepath.replace(/\\/g, '/');
}
function join(dir, glob) {
if (dir.charAt(dir.length - 1) === '/') {
dir = dir.slice(0, -1);
}
if (glob.charAt(0) === '/') {
glob = glob.slice(1);
}
if (!glob) return dir;
return dir + '/' + glob;
}
|