Fix bin/publish: use correct .env path for rspade_system Fix bin/publish script: prevent grep exit code 1 from terminating script 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
57 lines
1.4 KiB
JavaScript
Executable File
57 lines
1.4 KiB
JavaScript
Executable File
let path = require('path');
|
|
let glob = require('glob');
|
|
let File = require('../File');
|
|
let { promisify } = require('util');
|
|
let { concat } = require('lodash');
|
|
let globAsync = promisify(glob);
|
|
|
|
/** @internal */
|
|
module.exports.FileGlob = class FileGlob {
|
|
/**
|
|
* Find all relevant files matching the given source path.
|
|
*
|
|
* @param {string|string[]} src
|
|
* @param {{ ignore?: string[] }} options
|
|
* @returns {Promise<string[]>}
|
|
*/
|
|
static async expand(src, { ignore = [] } = {}) {
|
|
const paths = concat([], src);
|
|
|
|
const results = await Promise.all(
|
|
paths.map(async srcPath => {
|
|
const result = await this.find(srcPath);
|
|
|
|
if (!result.isDir && result.matches.length === 0) {
|
|
return [srcPath];
|
|
}
|
|
|
|
return result.matches;
|
|
})
|
|
);
|
|
|
|
const filepaths = results.flatMap(files => files);
|
|
|
|
return filepaths.filter(filepath => {
|
|
return !ignore.includes(filepath);
|
|
});
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @internal
|
|
* @param {string} src
|
|
* @returns {Promise<{isDir: boolean, matches: string[]}>}
|
|
*/
|
|
static async find(src) {
|
|
const isDir = File.find(src).isDirectory();
|
|
const pattern = isDir ? path.join(src, '**/*') : src;
|
|
|
|
const matches = await globAsync(pattern, { nodir: true });
|
|
|
|
return {
|
|
isDir,
|
|
matches
|
|
};
|
|
}
|
|
};
|