fix(github): collapse broad PR label groups
This commit is contained in:
parent
da53d207db
commit
d3481193ed
|
|
@ -22,6 +22,8 @@ export const STATIC_LABEL_SPECS = {
|
|||
"area/docs": { color: "0075ca", description: "Documentation site or repository documentation" },
|
||||
"area/ci": { color: "e99695", description: "GitHub Actions or repository automation" },
|
||||
"area/deploy": { color: "fef2c0", description: "Deployment, packaging, or distribution" },
|
||||
"area/multiple": { color: "ededed", description: "Touches more than three repository areas" },
|
||||
"db/multiple": { color: "ededed", description: "Touches more than three database integrations" },
|
||||
"ui-change": { color: "c5def5", description: "Changes user-visible interface, text, or visual assets" },
|
||||
"dependencies/frontend": { color: "0366d6", description: "Adds a frontend dependency" },
|
||||
"dependencies/backend": { color: "5319e7", description: "Adds a backend dependency" },
|
||||
|
|
@ -381,14 +383,19 @@ export function evaluatePullRequestLabels({
|
|||
readHeadFile = () => null,
|
||||
}) {
|
||||
const files = normalizeChangedFiles(changedFiles);
|
||||
const labels = new Set(inferAreaLabels(files));
|
||||
const areaLabels = inferAreaLabels(files);
|
||||
const labels = new Set(areaLabels.length > 3 ? ["area/multiple"] : areaLabels);
|
||||
const typeLabel = inferTypeLabel(title, files);
|
||||
if (typeLabel) labels.add(typeLabel);
|
||||
if (files.some(isUiChangeFile)) labels.add("ui-change");
|
||||
if (files.length > 0 && files.every(isTestFile)) labels.add("tests-only");
|
||||
|
||||
const databaseTypes = inferDatabaseTypes(files, knownDatabaseTypes);
|
||||
for (const databaseType of databaseTypes) labels.add(`${DATABASE_LABEL_PREFIX}${databaseType}`);
|
||||
if (databaseTypes.length > 3) {
|
||||
labels.add("db/multiple");
|
||||
} else {
|
||||
for (const databaseType of databaseTypes) labels.add(`${DATABASE_LABEL_PREFIX}${databaseType}`);
|
||||
}
|
||||
|
||||
const addedDependencies = inferAddedDependencies(files, readBaseFile, readHeadFile);
|
||||
if (addedDependencies.frontend.size > 0) labels.add("dependencies/frontend");
|
||||
|
|
|
|||
|
|
@ -98,6 +98,26 @@ test("recognizes conventional titles with a full-width colon", () => {
|
|||
assert.deepEqual(result.labels, ["area/core", "bug"]);
|
||||
});
|
||||
|
||||
test("collapses broad area and database changes", () => {
|
||||
const result = evaluatePullRequestLabels({
|
||||
title: "feat: add cross-runtime geometry support",
|
||||
changedFiles: [
|
||||
"agents/drivers/mysql/build.gradle",
|
||||
"apps/desktop/src/components/grid/GeometryViewer.vue",
|
||||
"crates/dbx-core/src/db/postgres.rs",
|
||||
"crates/dbx-mcp/src/main.rs",
|
||||
"crates/dbx-web/src/main.rs",
|
||||
"docs/content/docs/geometry.mdx",
|
||||
"plugins/dialects/sqlite.yaml",
|
||||
"plugins/dialects/sqlserver.yaml",
|
||||
],
|
||||
knownDatabaseTypes,
|
||||
});
|
||||
|
||||
assert.deepEqual(result.labels, ["area/multiple", "db/multiple", "enhancement", "ui-change"]);
|
||||
assert.deepEqual(result.databaseTypes, ["mysql", "postgres", "sqlite", "sqlserver"]);
|
||||
});
|
||||
|
||||
test("detects only newly added package dependencies", () => {
|
||||
const result = inferAddedDependencies(
|
||||
["package.json"],
|
||||
|
|
|
|||
Loading…
Reference in New Issue