sync-glob
Version:
Synchronize files and folders locally by glob patterns, watch option included.
62 lines (44 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _isGlob = require('./is-glob');
var _isGlob2 = _interopRequireDefault(_isGlob);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var reDir = /\/|\\/;
var globBase = function globBase(glob) {
if (!Array.isArray(glob)) {
// eslint-disable-next-line no-param-reassign
glob = [glob];
}
return glob.reduce(function (base, pattern) {
if (pattern.charAt(0) === '!') {
return base;
}
var index = (0, _isGlob2.default)(pattern);
var foundGlob = index > -1;
var isDir = void 0;
if (index > -1) {
var charBeforeGlob = pattern.charAt(index - 1);
isDir = reDir.test(charBeforeGlob);
// eslint-disable-next-line no-param-reassign
pattern = pattern.substring(0, index);
}
if (pattern) {
if (foundGlob && !isDir || !foundGlob && _fs2.default.statSync(pattern).isFile()) {
// eslint-disable-next-line no-param-reassign
pattern = _path2.default.dirname(pattern);
} else if (reDir.test(pattern.charAt(pattern.length - 1))) {
// eslint-disable-next-line no-param-reassign
pattern = pattern.slice(0, -1);
}
}
base.push(pattern);
return base;
}, []);
};
exports.default = globBase;