UNPKG

@kcws/lintstaged-config

Version:
71 lines 2.05 kB
import { existsSync, readFileSync, statSync } from "node:fs"; import path from "node:path"; import { getCommand } from "../utils/cmd"; const ROOT = "/"; const walkDirectory = (file, cb) => { const next = path.dirname(file); if (next === ROOT) return undefined; const nextStat = statSync(next); if (nextStat.isDirectory()) { const result = cb(next); return result !== null && result !== void 0 ? result : walkDirectory(next, cb); } return undefined; }; const resolveRushCommand = () => { const rush = getCommand("rush"); if (rush === "rush") { return ["node", "common/scripts/install-run-rush.js"]; } return [rush]; }; const resolvePackageName = (files) => { for (const file of files) { const name = walkDirectory(file, (directory) => { const pkg = path.resolve(directory, "package.json"); if (existsSync(pkg)) { const content = readFileSync(pkg); const json = JSON.parse(content.toString("utf8")); return json.name; } }); if (name) return name; } }; /** * build rush command using internal command finder. * * @param pkg - package name that will run on * @param cmd - rush command to execute * @param args - additional command arguments * @returns command string * * @beta */ export const rushOn = (pkg, cmd, ...args) => { const base = [...resolveRushCommand(), cmd]; if (pkg) base.push("--only", pkg); base.push(...args); return base.join(" "); }; /** * build rush command using internal command finder. * this will automatically resolve package to run * using cwd and package.json file. * * @param cmd - rush command to execute * @param args - additional command arguments * @returns command string * * @beta */ export const rush = (cmd, ...args) => { return (files) => { const pkg = resolvePackageName(files); return rushOn(pkg, cmd, ...args); }; }; //# sourceMappingURL=rush.js.map