Fixes #548 Add support body + generated release notes (#549)

This commit is contained in:
Nick Cipollo
2025-09-02 12:27:56 -04:00
committed by GitHub
parent 571fe81601
commit d3601261f8
4 changed files with 104 additions and 40 deletions

27
dist/index.js vendored
View File

@@ -118,20 +118,12 @@ class Action {
return draftRelease?.id;
}
async updateRelease(id) {
let releaseBody = this.inputs.updatedReleaseBody;
if (this.inputs.generateReleaseNotes && !this.inputs.omitBodyDuringUpdate) {
const response = await this.releases.generateReleaseNotes(this.inputs.tag);
releaseBody = response.data.body;
}
const releaseBody = await this.combineBodyWithReleaseNotes(this.inputs.updatedReleaseBody, true);
const releaseResponse = await this.releases.update(id, this.inputs.tag, releaseBody, this.inputs.commit, this.inputs.discussionCategory, this.inputs.updatedDraft, this.inputs.makeLatest, this.inputs.updatedReleaseName, this.inputs.updatedPrerelease);
await this.processReleaseArtifactsAndOutputs(releaseResponse, false);
}
async createRelease() {
let releaseBody = this.inputs.createdReleaseBody;
if (this.inputs.generateReleaseNotes) {
const response = await this.releases.generateReleaseNotes(this.inputs.tag);
releaseBody = response.data.body;
}
const releaseBody = await this.combineBodyWithReleaseNotes(this.inputs.createdReleaseBody, false);
// If immutableCreate is enabled we need to start with a draft release
const draft = this.inputs.createdDraft || this.inputs.immutableCreate;
const releaseResponse = await this.releases.create(this.inputs.tag, releaseBody, this.inputs.commit, this.inputs.discussionCategory, draft, this.inputs.makeLatest, this.inputs.createdReleaseName, this.inputs.createdPrerelease);
@@ -168,6 +160,21 @@ class Action {
this.inputs.discussionCategory, false, // We want to publish the release, set draft to false
this.inputs.makeLatest, this.inputs.createdReleaseName, this.inputs.createdPrerelease);
}
async combineBodyWithReleaseNotes(body, isUpdate) {
// Determine if we should generate release notes based on operation type
const shouldGenerateReleaseNotes = isUpdate
? this.inputs.generateReleaseNotes && !this.inputs.omitBodyDuringUpdate
: this.inputs.generateReleaseNotes;
if (!shouldGenerateReleaseNotes) {
return body;
}
const response = await this.releases.generateReleaseNotes(this.inputs.tag);
const releaseNotes = response.data.body;
if (!body || body.trim() === "") {
return releaseNotes;
}
return `${body}\n${releaseNotes}`;
}
setOutputs(releaseData, assetUrls) {
this.outputs.applyReleaseData(releaseData);
this.outputs.applyAssetUrls(assetUrls);