|
"use strict"; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0; |
|
const utils = require("../utils"); |
|
function generate(input, settings) { |
|
const patterns = processPatterns(input, settings); |
|
const ignore = processPatterns(settings.ignore, settings); |
|
const positivePatterns = getPositivePatterns(patterns); |
|
const negativePatterns = getNegativePatternsAsPositive(patterns, ignore); |
|
const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings)); |
|
const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings)); |
|
const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, false); |
|
const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, true); |
|
return staticTasks.concat(dynamicTasks); |
|
} |
|
exports.generate = generate; |
|
function processPatterns(input, settings) { |
|
let patterns = input; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (settings.braceExpansion) { |
|
patterns = utils.pattern.expandPatternsWithBraceExpansion(patterns); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (settings.baseNameMatch) { |
|
patterns = patterns.map((pattern) => pattern.includes('/') ? pattern : `**/${pattern}`); |
|
} |
|
|
|
|
|
|
|
return patterns.map((pattern) => utils.pattern.removeDuplicateSlashes(pattern)); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function convertPatternsToTasks(positive, negative, dynamic) { |
|
const tasks = []; |
|
const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive); |
|
const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive); |
|
const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory); |
|
const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory); |
|
tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic)); |
|
|
|
|
|
|
|
|
|
if ('.' in insideCurrentDirectoryGroup) { |
|
tasks.push(convertPatternGroupToTask('.', patternsInsideCurrentDirectory, negative, dynamic)); |
|
} |
|
else { |
|
tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic)); |
|
} |
|
return tasks; |
|
} |
|
exports.convertPatternsToTasks = convertPatternsToTasks; |
|
function getPositivePatterns(patterns) { |
|
return utils.pattern.getPositivePatterns(patterns); |
|
} |
|
exports.getPositivePatterns = getPositivePatterns; |
|
function getNegativePatternsAsPositive(patterns, ignore) { |
|
const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore); |
|
const positive = negative.map(utils.pattern.convertToPositivePattern); |
|
return positive; |
|
} |
|
exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive; |
|
function groupPatternsByBaseDirectory(patterns) { |
|
const group = {}; |
|
return patterns.reduce((collection, pattern) => { |
|
const base = utils.pattern.getBaseDirectory(pattern); |
|
if (base in collection) { |
|
collection[base].push(pattern); |
|
} |
|
else { |
|
collection[base] = [pattern]; |
|
} |
|
return collection; |
|
}, group); |
|
} |
|
exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; |
|
function convertPatternGroupsToTasks(positive, negative, dynamic) { |
|
return Object.keys(positive).map((base) => { |
|
return convertPatternGroupToTask(base, positive[base], negative, dynamic); |
|
}); |
|
} |
|
exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks; |
|
function convertPatternGroupToTask(base, positive, negative, dynamic) { |
|
return { |
|
dynamic, |
|
positive, |
|
negative, |
|
base, |
|
patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern)) |
|
}; |
|
} |
|
exports.convertPatternGroupToTask = convertPatternGroupToTask; |
|
|