46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
// ⚠️ GENERATED FILE – do not edit directly. Edit the canonical source in skills/atlassian/shared/scripts/ and run `pnpm run sync:pi`.
|
||
import type { CommandOutput, OutputFormat, Writer } from "./types.js";
|
||
|
||
function renderText(payload: CommandOutput<unknown>) {
|
||
const data = payload.data as Record<string, unknown>;
|
||
|
||
if (Array.isArray(data?.issues)) {
|
||
return data.issues
|
||
.map((issue) => {
|
||
const item = issue as Record<string, string>;
|
||
return `${item.key} [${item.status}] ${item.issueType} - ${item.summary}`;
|
||
})
|
||
.join("\n");
|
||
}
|
||
|
||
if (data?.issue && typeof data.issue === "object") {
|
||
const issue = data.issue as Record<string, string>;
|
||
return [
|
||
issue.key,
|
||
`${issue.issueType} | ${issue.status}`,
|
||
issue.summary,
|
||
issue.url,
|
||
].join("\n");
|
||
}
|
||
|
||
if (Array.isArray(data?.transitions)) {
|
||
return data.transitions
|
||
.map((transition) => {
|
||
const item = transition as Record<string, string>;
|
||
return `${item.id} ${item.name} -> ${item.toStatus}`;
|
||
})
|
||
.join("\n");
|
||
}
|
||
|
||
return JSON.stringify(payload, null, 2);
|
||
}
|
||
|
||
export function writeOutput(
|
||
writer: Writer,
|
||
payload: CommandOutput<unknown>,
|
||
format: OutputFormat = "json",
|
||
) {
|
||
const body = format === "text" ? renderText(payload) : JSON.stringify(payload, null, 2);
|
||
writer.write(`${body}\n`);
|
||
}
|