Skip to content

Commit

Permalink
Simplify expandDirectories option handling (#218)
Browse files Browse the repository at this point in the history
  • Loading branch information
fisker committed Jan 19, 2022
1 parent 128772a commit 65af64f
Showing 1 changed file with 22 additions and 28 deletions.
50 changes: 22 additions & 28 deletions index.js
Expand Up @@ -94,44 +94,33 @@ const generateGlobTasksInternal = (patterns, taskOptions) => {
return globTasks;
};

const globDirectories = (task, fn) => {
let options = {};
if (task.options.cwd) {
options.cwd = task.options.cwd;
}

if (Array.isArray(task.options.expandDirectories)) {
options = {
...options,
files: task.options.expandDirectories,
};
} else if (typeof task.options.expandDirectories === 'object') {
options = {
...options,
...task.options.expandDirectories,
};
}

return fn(task.pattern, options);
};
const getDirGlobOptions = (options, cwd) => ({
...(cwd ? {cwd} : {}),
...(Array.isArray(options) ? {files: options} : options),
});

const generateTasks = async (patterns, options) => {
const globTasks = generateGlobTasksInternal(patterns, options);

if (!options.expandDirectories) {
const {cwd, expandDirectories} = options;

if (!expandDirectories) {
return globTasks;
}

const patternExpandOptions = getDirGlobOptions(expandDirectories, cwd);
const ignoreExpandOptions = cwd ? {cwd} : undefined;

const tasks = await Promise.all(
globTasks.map(async task => {
const {options} = task;
const {pattern, options} = task;

const [
patterns,
ignore,
] = await Promise.all([
globDirectories(task, dirGlob),
dirGlob(options.ignore),
dirGlob(pattern, patternExpandOptions),
dirGlob(options.ignore, ignoreExpandOptions),
]);

options.ignore = ignore;
Expand All @@ -145,14 +134,19 @@ const generateTasks = async (patterns, options) => {
const generateTasksSync = (patterns, options) => {
const globTasks = generateGlobTasksInternal(patterns, options);

if (!options.expandDirectories) {
const {cwd, expandDirectories} = options;

if (!expandDirectories) {
return globTasks;
}

const patternExpandOptions = getDirGlobOptions(expandDirectories, cwd);
const ignoreExpandOptions = cwd ? {cwd} : undefined;

return globTasks.flatMap(task => {
const {options} = task;
const patterns = globDirectories(task, dirGlob.sync);
options.ignore = dirGlob.sync(options.ignore);
const {pattern, options} = task;
const patterns = dirGlob.sync(pattern, patternExpandOptions);
options.ignore = dirGlob.sync(options.ignore, ignoreExpandOptions);
return patterns.map(pattern => ({pattern, options}));
});
};
Expand Down

0 comments on commit 65af64f

Please sign in to comment.