@intlayer/chokidar
Version:
Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.
48 lines (46 loc) • 1.61 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
let node_path = require("node:path");
let fast_glob = require("fast-glob");
fast_glob = require_runtime.__toESM(fast_glob);
let _intlayer_config_node = require("@intlayer/config/node");
let simple_git = require("simple-git");
simple_git = require_runtime.__toESM(simple_git);
//#region src/listProjects.ts
/**
* Get the git root directory
*/
const getGitRootDir = async (cwd) => {
try {
return (await (cwd ? (0, simple_git.default)(cwd) : (0, simple_git.default)()).revparse(["--show-toplevel"])).trim();
} catch (_error) {
return null;
}
};
/**
* List all Intlayer projects by searching for configuration files
*
* @param options - Options for listing projects
* @returns Array of absolute paths to project directories containing Intlayer config
*/
const listProjects = async (options) => {
let searchDir = options?.baseDir ?? process.cwd();
if (options?.gitRoot) {
const gitRootDir = await getGitRootDir(searchDir);
if (gitRootDir) searchDir = gitRootDir;
}
const configFiles = await (0, fast_glob.default)(_intlayer_config_node.configurationFilesCandidates.map((fileName) => `**/${fileName}`), {
cwd: searchDir,
absolute: true,
ignore: ["**/node_modules/**", "**/.git/**"],
dot: true
});
const projectDirs = [...new Set(configFiles.map((file) => (0, node_path.dirname)(file)))];
return {
searchDir,
projectsPath: projectDirs.sort()
};
};
//#endregion
exports.listProjects = listProjects;
//# sourceMappingURL=listProjects.cjs.map