Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify expandDirectories option handling #218

Merged
merged 3 commits into from Jan 19, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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