refactor: js output
This commit is contained in:
parent
1aa28c2a34
commit
c6704c3a04
96 changed files with 3816 additions and 147 deletions
74
src/bugzilla/fieldmap.js
Normal file
74
src/bugzilla/fieldmap.js
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
// Status mapping: TODO → Bugzilla
|
||||
const STATUS_TO_BZ = {
|
||||
"open": { status: "CONFIRMED" },
|
||||
"in-progress": { status: "IN_PROGRESS" },
|
||||
"done": { status: "RESOLVED", resolution: "FIXED" },
|
||||
"hold": { status: "RESOLVED", resolution: "LATER" },
|
||||
"cancelled": { status: "RESOLVED", resolution: "WONTFIX" },
|
||||
};
|
||||
// Priority mapping
|
||||
const PRIORITY_TO_BZ = {
|
||||
"low": "Low",
|
||||
"medium": "Normal",
|
||||
"high": "Highest",
|
||||
};
|
||||
// Type → Severity mapping
|
||||
const TYPE_TO_SEVERITY = {
|
||||
"feature": "enhancement",
|
||||
"bugfix": "normal",
|
||||
"hotfix": "critical",
|
||||
};
|
||||
export function statusToBugzilla(status) {
|
||||
return STATUS_TO_BZ[status] ?? { status: "NEW" };
|
||||
}
|
||||
export function priorityToBugzilla(priority) {
|
||||
return PRIORITY_TO_BZ[priority] ?? "Normal";
|
||||
}
|
||||
export function typeToBugzilla(type) {
|
||||
return TYPE_TO_SEVERITY[type] ?? "normal";
|
||||
}
|
||||
export function resolveProductComponent(issue, bugzilla) {
|
||||
if (!bugzilla)
|
||||
return null;
|
||||
if (issue.module) {
|
||||
const mapping = bugzilla.mappings.find((m) => m.module === issue.module);
|
||||
if (mapping)
|
||||
return { product: mapping.product, component: mapping.component };
|
||||
}
|
||||
// Fall back to first mapping
|
||||
return bugzilla.mappings.length > 0
|
||||
? { product: bugzilla.mappings[0].product, component: bugzilla.mappings[0].component }
|
||||
: null;
|
||||
}
|
||||
export function issueToBugzillaCreate(issue, product, component, url) {
|
||||
const bz = statusToBugzilla(issue.status);
|
||||
return {
|
||||
product,
|
||||
component,
|
||||
version: "unspecified",
|
||||
summary: issue.title,
|
||||
url,
|
||||
description: issue.description || undefined,
|
||||
priority: priorityToBugzilla(issue.priority),
|
||||
severity: typeToBugzilla(issue.type),
|
||||
op_sys: "All",
|
||||
rep_platform: "All",
|
||||
depends_on: issue.relationships.dependsOn ?? [],
|
||||
blocks: issue.relationships.blocks ?? [],
|
||||
see_also: (issue.relationships.relatesTo ?? []).map(String),
|
||||
};
|
||||
}
|
||||
export function issueToBugzillaUpdate(issue) {
|
||||
const bz = statusToBugzilla(issue.status);
|
||||
const payload = {
|
||||
summary: issue.title,
|
||||
status: bz.status,
|
||||
priority: priorityToBugzilla(issue.priority),
|
||||
severity: typeToBugzilla(issue.type),
|
||||
depends_on: { set: issue.relationships.dependsOn ?? [] },
|
||||
blocks: { set: issue.relationships.blocks ?? [] },
|
||||
};
|
||||
if (bz.resolution)
|
||||
payload.resolution = bz.resolution;
|
||||
return payload;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue