1
0
mirror of https://gitea.com/actions/gitea-release-action.git synced 2025-06-30 23:58:14 +07:00

fix: deletion of old releases

Duplicate deletions occur when users generate their own .md5 and .sha256 files and do not use action's built-in md5sum and sha256sum functions.
issue: https://github.com/akkuman/gitea-release-action/issues/5
This commit is contained in:
Akkuman 2025-06-25 10:51:48 +08:00
parent 65a502e85c
commit f66c1c98f1
2 changed files with 36 additions and 22 deletions

13
dist/index.js vendored
View File

@ -48279,10 +48279,18 @@ async function uploadFiles(client, owner, repo, release_id, all_files, params) {
id: release_id, id: release_id,
}) })
// deleted old release attachment // deleted old release attachment
const will_deleted = new Set();
for (const filepath of all_files) { for (const filepath of all_files) {
will_deleted.add(external_path_.basename(filepath));
if (params.md5sum) {
will_deleted.add(`${external_path_.basename(filepath)}.md5`);
}
if (params.sha256sum) {
will_deleted.add(`${external_path_.basename(filepath)}.sha256`);
}
}
for (const attachment of attachments) { for (const attachment of attachments) {
let will_deleted = [external_path_.basename(filepath), `${external_path_.basename(filepath)}.md5`, `${external_path_.basename(filepath)}.sha256`] if (will_deleted.has(attachment.name)) {
if (will_deleted.includes(attachment.name)) {
await client.repository.repoDeleteReleaseAttachment({ await client.repository.repoDeleteReleaseAttachment({
owner: owner, owner: owner,
repo: repo, repo: repo,
@ -48292,7 +48300,6 @@ async function uploadFiles(client, owner, repo, release_id, all_files, params) {
console.log(`Successfully deleted old release attachment ${attachment.name}`) console.log(`Successfully deleted old release attachment ${attachment.name}`)
} }
} }
}
// upload new release attachment // upload new release attachment
for (const filepath of all_files) { for (const filepath of all_files) {
const content = external_fs_.readFileSync(filepath); const content = external_fs_.readFileSync(filepath);

13
main.js
View File

@ -143,10 +143,18 @@ async function uploadFiles(client, owner, repo, release_id, all_files, params) {
id: release_id, id: release_id,
}) })
// deleted old release attachment // deleted old release attachment
const will_deleted = new Set();
for (const filepath of all_files) { for (const filepath of all_files) {
will_deleted.add(path.basename(filepath));
if (params.md5sum) {
will_deleted.add(`${path.basename(filepath)}.md5`);
}
if (params.sha256sum) {
will_deleted.add(`${path.basename(filepath)}.sha256`);
}
}
for (const attachment of attachments) { for (const attachment of attachments) {
let will_deleted = [path.basename(filepath), `${path.basename(filepath)}.md5`, `${path.basename(filepath)}.sha256`] if (will_deleted.has(attachment.name)) {
if (will_deleted.includes(attachment.name)) {
await client.repository.repoDeleteReleaseAttachment({ await client.repository.repoDeleteReleaseAttachment({
owner: owner, owner: owner,
repo: repo, repo: repo,
@ -156,7 +164,6 @@ async function uploadFiles(client, owner, repo, release_id, all_files, params) {
console.log(`Successfully deleted old release attachment ${attachment.name}`) console.log(`Successfully deleted old release attachment ${attachment.name}`)
} }
} }
}
// upload new release attachment // upload new release attachment
for (const filepath of all_files) { for (const filepath of all_files) {
const content = fs.readFileSync(filepath); const content = fs.readFileSync(filepath);