async function generateJobSummary()

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");
}