Skip to content

Commit

Permalink
Simplify expandDirectories option handling
Browse files Browse the repository at this point in the history
  • Loading branch information
fisker committed Jan 19, 2022
1 parent 7cc223c commit 61c2eb1
Showing 1 changed file with 19 additions and 28 deletions.
47 changes: 19 additions & 28 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,44 +94,31 @@ 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) => Array.isArray(options)
? {cwd, files: options}
: {...options, cwd};

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

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

if (!expandDirectories) {
return globTasks;
}

const dirGlobOptions = getDirGlobOptions(expandDirectories, cwd);

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, dirGlobOptions),
dirGlob(options.ignore, {cwd}),
]);

options.ignore = ignore;
Expand All @@ -145,14 +132,18 @@ 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 dirGlobOptions = getDirGlobOptions(expandDirectories, cwd);

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, dirGlobOptions);
options.ignore = dirGlob.sync(options.ignore, {cwd});
return patterns.map(pattern => ({pattern, options}));
});
};
Expand Down

0 comments on commit 61c2eb1

Please sign in to comment.