mirror of
https://github.com/murashit/codex-panel.git
synced 2026-07-22 17:30:31 +00:00
61 lines
1.9 KiB
JavaScript
61 lines
1.9 KiB
JavaScript
|
|
import concurrently from "concurrently";
|
||
|
|
|
||
|
|
const args = process.argv.slice(2);
|
||
|
|
const validArgs = new Set(["--ci", "--lint"]);
|
||
|
|
const unknownArgs = args.filter((arg) => !validArgs.has(arg));
|
||
|
|
|
||
|
|
if (unknownArgs.length > 0) {
|
||
|
|
console.error("Usage: node scripts/check.mjs [--ci] [--lint]");
|
||
|
|
process.exit(1);
|
||
|
|
}
|
||
|
|
|
||
|
|
const ciMode = args.includes("--ci");
|
||
|
|
const lintOnly = args.includes("--lint");
|
||
|
|
const concurrentOptions = {
|
||
|
|
group: true,
|
||
|
|
padPrefix: true,
|
||
|
|
prefix: "name",
|
||
|
|
};
|
||
|
|
|
||
|
|
try {
|
||
|
|
if (lintOnly) {
|
||
|
|
await runConcurrently(lintCommands({ ciMode }));
|
||
|
|
} else {
|
||
|
|
await runConcurrently(checkCommands({ ciMode }));
|
||
|
|
await runConcurrently([{ name: "build", command: "node esbuild.config.mjs" }]);
|
||
|
|
}
|
||
|
|
} catch {
|
||
|
|
process.exit(1);
|
||
|
|
}
|
||
|
|
|
||
|
|
async function runConcurrently(commands) {
|
||
|
|
await concurrently(commands, concurrentOptions).result;
|
||
|
|
}
|
||
|
|
|
||
|
|
function checkCommands({ ciMode }) {
|
||
|
|
const suffix = ciMode ? ":ci" : "";
|
||
|
|
const formatArgs = ciMode ? "--check" : "--check --cache";
|
||
|
|
|
||
|
|
return [
|
||
|
|
{ name: "typecheck", command: `npm run --silent typecheck${suffix}` },
|
||
|
|
{ name: "test", command: `npm run --silent test${suffix}` },
|
||
|
|
...lintCommands({ ciMode, namePrefix: "lint:" }),
|
||
|
|
{ name: "format:check", command: `node scripts/format.mjs ${formatArgs}` },
|
||
|
|
];
|
||
|
|
}
|
||
|
|
|
||
|
|
function lintCommands({ ciMode, namePrefix = "" }) {
|
||
|
|
const eslintCacheArgs = ciMode ? "" : " --cache --cache-strategy content --cache-location node_modules/.cache/eslint/.eslintcache";
|
||
|
|
|
||
|
|
return [
|
||
|
|
{
|
||
|
|
name: `${namePrefix}ts`,
|
||
|
|
command: `eslint src tests scripts "*.config.ts" "*.config.mjs" --max-warnings=0${eslintCacheArgs}`,
|
||
|
|
},
|
||
|
|
{ name: `${namePrefix}css`, command: 'stylelint "src/**/*.css" --max-warnings=0' },
|
||
|
|
{ name: `${namePrefix}css-usage`, command: "node scripts/lint/check-css-usage.mjs --fail-on-candidates" },
|
||
|
|
{ name: `${namePrefix}deps`, command: "node scripts/lint/check-import-cycles.mjs" },
|
||
|
|
{ name: `${namePrefix}unused`, command: "knip --no-progress" },
|
||
|
|
];
|
||
|
|
}
|