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
47 lines • 2.27 kB
JavaScript
import { StepLogsFormatter } from './Formatter.js';
import { SEMANTIC_COLORS } from '../../ui/theme.js';
import { formatStatus, formatRelativeDate, formatDuration, formatSize } from '../../utils/formatUtils.js';
export class PlainStepLogsFormatter extends StepLogsFormatter {
name = 'plain';
constructor(options) {
super(options);
}
format(data) {
const { build, step, logs } = data;
const lines = [];
// Build context header
lines.push(SEMANTIC_COLORS.heading(`Build: ${build.org}/${build.pipeline} #${build.number}`));
lines.push(SEMANTIC_COLORS.dim(`Status: ${formatStatus(build.state)}`));
if (build.startedAt) {
lines.push(SEMANTIC_COLORS.dim(`Started: ${formatRelativeDate(build.startedAt)}`));
}
if (build.finishedAt && build.startedAt) {
const duration = formatDuration(build.startedAt, build.finishedAt);
lines.push(SEMANTIC_COLORS.dim(`Duration: ${duration}`));
}
lines.push('');
// Step information
lines.push(SEMANTIC_COLORS.subheading(`Step: ${step.label || 'Unnamed Step'}`));
lines.push(SEMANTIC_COLORS.dim(`Job ID: ${step.id}`));
lines.push(SEMANTIC_COLORS.dim(`State: ${step.state}`));
if (step.exitStatus !== undefined) {
lines.push(SEMANTIC_COLORS.dim(`Exit Status: ${step.exitStatus}`));
}
lines.push('');
// Logs
lines.push(SEMANTIC_COLORS.subheading(`Logs (last ${logs.displayedLines} lines of ${logs.totalLines}):`));
lines.push(SEMANTIC_COLORS.dim('─'.repeat(60)));
lines.push(logs.content);
lines.push(SEMANTIC_COLORS.dim('─'.repeat(60)));
lines.push('');
// Tips
if (logs.displayedLines < logs.totalLines) {
const sizeFormatted = formatSize(logs.size);
lines.push(SEMANTIC_COLORS.tip(`→ Log is ${sizeFormatted}. Showing last ${logs.displayedLines} lines.`));
lines.push(SEMANTIC_COLORS.tip(`→ Run with --full to see all ${logs.totalLines} lines`));
lines.push(SEMANTIC_COLORS.tip(`→ Run with --save <path> to save to file`));
}
return lines.join('\n');
}
}
//# sourceMappingURL=PlainFormatter.js.map