Files
tutti/tools/scripts/run-golangci-lint.mjs
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

49 lines
1.4 KiB
JavaScript

import { spawnSync } from "node:child_process";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
import { resolveGolangciLintBinary } from "./golangci-lint-tool.mjs";
import {
discoverGoModuleRoots,
selectGoLintModuleRoots
} from "./run-check-changed-targets.mjs";
const scriptDirectory = dirname(fileURLToPath(import.meta.url));
const workspaceRoot = join(scriptDirectory, "..", "..");
const sharedConfigPath = join(
workspaceRoot,
"services",
"tuttid",
".golangci.yml"
);
const goModuleRoots = selectGoLintModuleRoots(
discoverGoModuleRoots({ root: workspaceRoot })
).map((moduleRoot) => join(workspaceRoot, moduleRoot));
const args = [
"run",
"--config",
sharedConfigPath,
"./...",
...process.argv.slice(2)
];
const golangciLintBinary = resolveGolangciLintBinary({ cwd: workspaceRoot });
for (const moduleRoot of goModuleRoots) {
const result = spawnSync(golangciLintBinary, args, {
cwd: moduleRoot,
encoding: "utf8",
stdio: "inherit"
});
if (result.error?.code === "ENOENT") {
process.stderr.write(
"golangci-lint is required for `pnpm lint:go`.\nInstall a compatible version and rerun the command, or rely on PR CI for final verification.\n"
);
process.exitCode = 1;
break;
}
if (typeof result.status !== "number" || result.status !== 0) {
process.exitCode = typeof result.status === "number" ? result.status : 1;
break;
}
}