Files
modelstudioai__cli/tools/release/lib/pack-scan.mjs
zeyu.fz a966b4077f feat(release): add --knowledge flag and publish-knowledge.yml workflow
- packages.mjs: export KSCLI_PACKAGE and ALL_PACKAGES for knowledge-studio-cli
- check.mjs: support knowledge option to build/validate kscli
- validate.mjs: accept packages param, validate all packages in lockstep
- pack-scan.mjs: accept packages param
- publish-stable.mjs: refactor to iterate PACKAGES array; add --knowledge flag
- publish-channel.mjs: refactor to iterate PACKAGES array; add --knowledge flag
- New workflow publish-knowledge.yml: triggers publish with --knowledge flag

The original publish.yml (without --knowledge) publishes only core + cli.
The new publish-knowledge.yml publishes core + cli + knowledge-studio-cli.
2026-06-26 17:20:25 +08:00

36 lines
1.2 KiB
JavaScript

import { mkdtempSync, renameSync, rmSync } from "fs";
import { tmpdir } from "os";
import { join } from "path";
import { PACKAGES, readPackageJson } from "./packages.mjs";
import { pnpmPack } from "./npm.mjs";
import { run } from "./proc.mjs";
function extractTarball(tarball, tempDir, key) {
run("tar", ["-xzf", tarball, "-C", tempDir], { stdio: "pipe" });
const extractDir = join(tempDir, `extract-${key}`);
renameSync(join(tempDir, "package"), extractDir);
return extractDir;
}
export function packAndScan({ log, packages }) {
const pkgs = packages ?? PACKAGES;
const tempDir = mkdtempSync(join(tmpdir(), "bailian-release-"));
try {
for (const pkg of pkgs) {
const json = readPackageJson(pkg);
log(`packing ${pkg.name}@${json.version}`);
const tarball = pnpmPack(pkg, tempDir, json);
const extractDir = extractTarball(tarball, tempDir, pkg.key);
log(`publint ${pkg.name}`);
run("npx", ["--yes", "publint", extractDir]);
log(`gitleaks ${pkg.name}`);
run("gitleaks", ["detect", "--source", extractDir, "--no-git", "--redact"]);
}
} finally {
rmSync(tempDir, { recursive: true, force: true });
}
}