bktide
Version:
Command-line interface for Buildkite CI/CD workflows with rich shell completions (Fish, Bash, Zsh) and Alfred workflow integration for macOS power users
44 lines • 1.82 kB
JavaScript
import { BaseFormatter } from './Formatter.js';
export class JsonFormatter extends BaseFormatter {
name = 'json';
formatBuilds(builds, options) {
// Handle error cases
if (options?.hasError) {
const errorResult = {
error: true,
errorType: options.errorType || 'unknown',
message: options.errorMessage || 'An error occurred',
accessErrors: options.accessErrors || []
};
return JSON.stringify(errorResult, null, 2);
}
// Handle empty results (no error, just no data)
if (builds.length === 0) {
const emptyResult = {
count: 0,
builds: [],
message: options?.userName
? `No builds found for ${options.userName}${options?.userEmail ? ` (${options.userEmail})` : ''}.`
: 'No builds found.'
};
return JSON.stringify(emptyResult, null, 2);
}
// Normal case with builds
const result = {
count: builds.length,
builds: builds.map((build) => ({
pipeline: build.pipeline?.slug || 'Unknown pipeline',
number: build.number,
branch: build.branch || 'Unknown',
state: build.state || 'Unknown',
message: build.message || 'No message',
url: build.web_url || build.url || 'No URL',
created_at: build.created_at || build.createdAt || null,
started_at: build.started_at || build.startedAt || null,
finished_at: build.finished_at || build.finishedAt || null
}))
};
return JSON.stringify(result, null, 2);
}
}
//# sourceMappingURL=JsonFormatter.js.map