mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 06:50:43 +00:00
ci(deps): gate extension-owned root dependencies
This commit is contained in:
@@ -268,6 +268,23 @@ export function collectRootDependencyOwnershipAudit(params = {}) {
|
||||
.toSorted((left, right) => left.depName.localeCompare(right.depName));
|
||||
}
|
||||
|
||||
export function collectRootDependencyOwnershipCheckErrors(records) {
|
||||
return records
|
||||
.filter((record) => record.category === "extension_only_localizable")
|
||||
.map((record) => {
|
||||
const declaredInExtensions =
|
||||
record.declaredInExtensions.length > 0
|
||||
? `; extension declarations: ${record.declaredInExtensions.join(", ")}`
|
||||
: "";
|
||||
const sampleFiles =
|
||||
record.sampleFiles.length > 0 ? `; sample imports: ${record.sampleFiles.join(", ")}` : "";
|
||||
return (
|
||||
`root dependency '${record.depName}' is extension-owned (${record.recommendation})` +
|
||||
`${declaredInExtensions}${sampleFiles}`
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
function printTextReport(records) {
|
||||
const grouped = new Map();
|
||||
for (const record of records) {
|
||||
@@ -294,7 +311,22 @@ function printTextReport(records) {
|
||||
|
||||
function main(argv = process.argv.slice(2)) {
|
||||
const asJson = argv.includes("--json");
|
||||
const check = argv.includes("--check");
|
||||
const records = collectRootDependencyOwnershipAudit();
|
||||
if (check) {
|
||||
const errors = collectRootDependencyOwnershipCheckErrors(records);
|
||||
if (errors.length > 0) {
|
||||
for (const error of errors) {
|
||||
console.error(`[root-dependency-ownership] ${error}`);
|
||||
}
|
||||
process.exitCode = 1;
|
||||
return;
|
||||
}
|
||||
if (!asJson) {
|
||||
console.error("[root-dependency-ownership] ok");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (asJson) {
|
||||
console.log(JSON.stringify(records, null, 2));
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user