in src/entrypoints/give-feedback.ts [42:87]
async function generateJobSummary(isJobFailed: boolean): Promise<void> {
const summaryFile = process.env.GITHUB_STEP_SUMMARY;
if (!summaryFile) {
console.log("GITHUB_STEP_SUMMARY not available, skipping summary generation");
return;
}
// Build junieOutput from already parsed env variables
const junieOutput: any = {};
if (isJobFailed) {
// For failed jobs, add error message
const errorMessage = process.env[ENV_VARS.ERROR];
if (errorMessage) {
junieOutput.error = errorMessage;
}
} else {
// For successful jobs, use already parsed values
junieOutput.title = process.env[OUTPUT_VARS.JUNIE_TITLE];
junieOutput.summary = process.env[OUTPUT_VARS.JUNIE_SUMMARY];
}
// Try to get duration_ms from JSON_JUNIE_OUTPUT if available
const jsonOutput = process.env[ENV_VARS.JSON_JUNIE_OUTPUT];
if (jsonOutput) {
try {
const parsed = JSON.parse(jsonOutput);
if (parsed.duration_ms) {
junieOutput.duration_ms = parsed.duration_ms;
}
} catch (parseError) {
// Ignore parse errors, we have the main data from env vars
}
}
const markdown = formatJunieSummary(
junieOutput,
process.env[OUTPUT_VARS.ACTION_TO_DO],
process.env[ENV_VARS.COMMIT_SHA],
process.env[ENV_VARS.PR_LINK],
process.env[OUTPUT_VARS.WORKING_BRANCH]
);
appendFileSync(summaryFile, markdown);
console.log("✓ Successfully generated Junie summary");
}