mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-28 06:51:16 +08:00
51 lines
1.8 KiB
JavaScript
51 lines
1.8 KiB
JavaScript
|
|
#!/usr/bin/env node
|
||
|
|
// Runs website/scripts/extract-skills.py before docusaurus build/start so
|
||
|
|
// that website/src/data/skills.json (imported by src/pages/skills/index.tsx)
|
||
|
|
// exists without contributors needing to remember to run the Python script
|
||
|
|
// manually. CI workflows still run the extraction explicitly, which is a
|
||
|
|
// no-op duplicate but matches their historical behaviour.
|
||
|
|
//
|
||
|
|
// If python3 or its deps (pyyaml) aren't available on the local machine, we
|
||
|
|
// fall back to writing an empty skills.json so `npm run build` still
|
||
|
|
// succeeds — the Skills Hub page just shows an empty state. CI always has
|
||
|
|
// the deps installed, so production deploys get real data.
|
||
|
|
|
||
|
|
import { spawnSync } from "node:child_process";
|
||
|
|
import { mkdirSync, writeFileSync, existsSync } from "node:fs";
|
||
|
|
import { dirname, join, resolve } from "node:path";
|
||
|
|
import { fileURLToPath } from "node:url";
|
||
|
|
|
||
|
|
const scriptDir = dirname(fileURLToPath(import.meta.url));
|
||
|
|
const websiteDir = resolve(scriptDir, "..");
|
||
|
|
const extractScript = join(scriptDir, "extract-skills.py");
|
||
|
|
const outputFile = join(websiteDir, "src", "data", "skills.json");
|
||
|
|
|
||
|
|
function writeEmptyFallback(reason) {
|
||
|
|
mkdirSync(dirname(outputFile), { recursive: true });
|
||
|
|
writeFileSync(outputFile, "[]\n");
|
||
|
|
console.warn(
|
||
|
|
`[prebuild] extract-skills.py skipped (${reason}); wrote empty skills.json. ` +
|
||
|
|
`Install python3 + pyyaml locally for a populated Skills Hub page.`,
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!existsSync(extractScript)) {
|
||
|
|
writeEmptyFallback("extract script missing");
|
||
|
|
process.exit(0);
|
||
|
|
}
|
||
|
|
|
||
|
|
const result = spawnSync("python3", [extractScript], {
|
||
|
|
stdio: "inherit",
|
||
|
|
cwd: websiteDir,
|
||
|
|
});
|
||
|
|
|
||
|
|
if (result.error && result.error.code === "ENOENT") {
|
||
|
|
writeEmptyFallback("python3 not found");
|
||
|
|
process.exit(0);
|
||
|
|
}
|
||
|
|
|
||
|
|
if (result.status !== 0) {
|
||
|
|
writeEmptyFallback(`extract-skills.py exited with status ${result.status}`);
|
||
|
|
process.exit(0);
|
||
|
|
}
|