Track HiveGrid Cloud planning reference
This commit is contained in:
1 parent
b3d5ea6764
commit
e341c5938a
5784 files changed
+1104929
-3
No files matched your search
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env node
|
||||
/* eslint-disable no-console */
|
||||
import { spawn } from "node:child_process";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
const repoRoot = path.resolve(__dirname, "..");
|
||||
|
||||
export const gates = [
|
||||
{
|
||||
label: "TypeScript/static health",
|
||||
command: "pnpm",
|
||||
args: ["run", "typecheck"],
|
||||
},
|
||||
{
|
||||
label: "Focused auth/API/body-limit Vitest surfaces",
|
||||
command: "pnpm",
|
||||
args: [
|
||||
"exec",
|
||||
"vitest",
|
||||
"run",
|
||||
"apps/api/src/auth.test.ts",
|
||||
"apps/api/src/app.test.ts",
|
||||
"apps/api/src/middleware/body-limit.test.ts",
|
||||
"apps/api/src/middleware/request-id.test.ts",
|
||||
"apps/web/app/routes/session-entry.host-aware.test.ts",
|
||||
"root.theme-preference.test.tsx",
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export function shellCommand({ command, args }) {
|
||||
return [command, ...args].join(" ");
|
||||
}
|
||||
|
||||
export function runGate(gate) {
|
||||
return new Promise((resolve) => {
|
||||
console.log(`\n[Auth API Body baseline] ${gate.label}`);
|
||||
console.log(`[Auth API Body baseline] $ ${shellCommand(gate)}`);
|
||||
|
||||
const child = spawn(gate.command, gate.args, {
|
||||
cwd: repoRoot,
|
||||
env: { ...process.env, CI: "1" },
|
||||
shell: false,
|
||||
stdio: "inherit",
|
||||
});
|
||||
|
||||
child.on("error", (error) => {
|
||||
console.error(`[Auth API Body baseline] ${gate.label} failed to start: ${error.message}`);
|
||||
resolve(1);
|
||||
});
|
||||
|
||||
child.on("close", (code) => {
|
||||
resolve(code ?? 1);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export async function runGates(commandInventory = gates) {
|
||||
for (const gate of commandInventory) {
|
||||
const exitCode = await runGate(gate);
|
||||
if (exitCode !== 0) {
|
||||
console.error(`[Auth API Body baseline] Failing gate: ${gate.label} (exit code ${exitCode})`);
|
||||
return exitCode;
|
||||
}
|
||||
}
|
||||
|
||||
console.log("\n[Auth API Body baseline] All baseline gates passed.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (import.meta.url === `file://${process.argv[1]}`) {
|
||||
const exitCode = await runGates();
|
||||
process.exitCode = exitCode;
|
||||
}
|
||||
Reference in new issue
Block a user