6 Commits
v1.3.0 ... main

Author SHA1 Message Date
f66c1c98f1 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
2025-06-25 10:53:06 +08:00
65a502e85c fix: delete old release attachments 2025-06-23 15:10:15 +08:00
f119011bd6 fix: bool value parse 2024-05-06 23:15:48 +08:00
1d562cf526 chore: package build 2024-05-06 22:53:36 +08:00
f00f823d73 Merge pull request 'Fix parse bool bug' (#5) from lunny/fix_parsebool into main
Reviewed-on: https://gitea.com/actions/gitea-release-action/pulls/5
2024-05-06 14:46:35 +00:00
6a4c0c7c03 Fix parse bool bug 2024-05-06 22:08:41 +08:00
2 changed files with 61 additions and 30 deletions

46
dist/index.js vendored
View File

@ -48144,6 +48144,10 @@ var crypto_js = __nccwpck_require__(4134);
function getIsTrue(v) {
const trueValue = ['true', 'True', 'TRUE']
return trueValue.includes(v)
}
async function run() { async function run() {
try { try {
@ -48151,14 +48155,14 @@ async function run() {
const name = core.getInput("name") const name = core.getInput("name")
const body = getReleaseBody(core.getInput("body"), core.getInput("body_path")) const body = getReleaseBody(core.getInput("body"), core.getInput("body_path"))
const tag_name = core.getInput("tag_name") const tag_name = core.getInput("tag_name")
const draft = Boolean(core.getInput("draft")) const draft = getIsTrue(core.getInput("draft"))
const prerelease = Boolean(core.getInput("prerelease")) const prerelease = getIsTrue(core.getInput("prerelease"))
const files = core.getInput("files") const files = core.getInput("files")
const repository = core.getInput("repository") const repository = core.getInput("repository")
const token = core.getInput("token") const token = core.getInput("token")
const target_commitish = core.getInput("target_commitish") const target_commitish = core.getInput("target_commitish")
const md5sum = core.getInput("md5sum") const md5sum = getIsTrue(core.getInput("md5sum"))
const sha256sum = core.getInput("sha256sum") const sha256sum = getIsTrue(core.getInput("sha256sum"))
const [owner, repo] = (repository).split("/") const [owner, repo] = (repository).split("/")
@ -48265,6 +48269,7 @@ function paths(patterns) {
* @param {String} repo * @param {String} repo
* @param {Number} release_id * @param {Number} release_id
* @param {Array<String>} all_files * @param {Array<String>} all_files
* @param {Map<String, Any>} additional parameters
*/ */
async function uploadFiles(client, owner, repo, release_id, all_files, params) { async function uploadFiles(client, owner, repo, release_id, all_files, params) {
params = params || {}; params = params || {};
@ -48273,19 +48278,30 @@ async function uploadFiles(client, owner, repo, release_id, all_files, params) {
repo: repo, repo: repo,
id: release_id, id: release_id,
}) })
// deleted old release attachment
const will_deleted = new Set();
for (const filepath of all_files) { for (const filepath of all_files) {
for (const attachment of attachments) { will_deleted.add(external_path_.basename(filepath));
let will_deleted = [external_path_.basename(filepath), `${external_path_.basename(filepath)}.md5`, `${external_path_.basename(filepath)}.sha256`] if (params.md5sum) {
if (will_deleted.includes(attachment.name)) { will_deleted.add(`${external_path_.basename(filepath)}.md5`);
await client.repository.repoDeleteReleaseAttachment({
owner: owner,
repo: repo,
id: release_id,
attachmentId: attachment.id,
})
console.log(`Successfully deleted old release attachment ${attachment.name}`)
}
} }
if (params.sha256sum) {
will_deleted.add(`${external_path_.basename(filepath)}.sha256`);
}
}
for (const attachment of attachments) {
if (will_deleted.has(attachment.name)) {
await client.repository.repoDeleteReleaseAttachment({
owner: owner,
repo: repo,
id: release_id,
attachmentId: attachment.id,
})
console.log(`Successfully deleted old release attachment ${attachment.name}`)
}
}
// upload new release attachment
for (const filepath of all_files) {
const content = external_fs_.readFileSync(filepath); const content = external_fs_.readFileSync(filepath);
let blob = new external_buffer_.Blob([content]); let blob = new external_buffer_.Blob([content]);
await client.repository.repoCreateReleaseAttachment({ await client.repository.repoCreateReleaseAttachment({

45
main.js
View File

@ -8,6 +8,10 @@ import gitea from "gitea-api";
import path from 'path'; import path from 'path';
import CryptoJS from 'crypto-js'; import CryptoJS from 'crypto-js';
function getIsTrue(v) {
const trueValue = ['true', 'True', 'TRUE']
return trueValue.includes(v)
}
async function run() { async function run() {
try { try {
@ -15,14 +19,14 @@ async function run() {
const name = core.getInput("name") const name = core.getInput("name")
const body = getReleaseBody(core.getInput("body"), core.getInput("body_path")) const body = getReleaseBody(core.getInput("body"), core.getInput("body_path"))
const tag_name = core.getInput("tag_name") const tag_name = core.getInput("tag_name")
const draft = Boolean(core.getInput("draft")) const draft = getIsTrue(core.getInput("draft"))
const prerelease = Boolean(core.getInput("prerelease")) const prerelease = getIsTrue(core.getInput("prerelease"))
const files = core.getInput("files") const files = core.getInput("files")
const repository = core.getInput("repository") const repository = core.getInput("repository")
const token = core.getInput("token") const token = core.getInput("token")
const target_commitish = core.getInput("target_commitish") const target_commitish = core.getInput("target_commitish")
const md5sum = core.getInput("md5sum") const md5sum = getIsTrue(core.getInput("md5sum"))
const sha256sum = core.getInput("sha256sum") const sha256sum = getIsTrue(core.getInput("sha256sum"))
const [owner, repo] = (repository).split("/") const [owner, repo] = (repository).split("/")
@ -138,19 +142,30 @@ async function uploadFiles(client, owner, repo, release_id, all_files, params) {
repo: repo, repo: repo,
id: release_id, id: release_id,
}) })
// deleted old release attachment
const will_deleted = new Set();
for (const filepath of all_files) { for (const filepath of all_files) {
for (const attachment of attachments) { will_deleted.add(path.basename(filepath));
let will_deleted = [path.basename(filepath), `${path.basename(filepath)}.md5`, `${path.basename(filepath)}.sha256`] if (params.md5sum) {
if (will_deleted.includes(attachment.name)) { will_deleted.add(`${path.basename(filepath)}.md5`);
await client.repository.repoDeleteReleaseAttachment({
owner: owner,
repo: repo,
id: release_id,
attachmentId: attachment.id,
})
console.log(`Successfully deleted old release attachment ${attachment.name}`)
}
} }
if (params.sha256sum) {
will_deleted.add(`${path.basename(filepath)}.sha256`);
}
}
for (const attachment of attachments) {
if (will_deleted.has(attachment.name)) {
await client.repository.repoDeleteReleaseAttachment({
owner: owner,
repo: repo,
id: release_id,
attachmentId: attachment.id,
})
console.log(`Successfully deleted old release attachment ${attachment.name}`)
}
}
// upload new release attachment
for (const filepath of all_files) {
const content = fs.readFileSync(filepath); const content = fs.readFileSync(filepath);
let blob = new Blob([content]); let blob = new Blob([content]);
await client.repository.repoCreateReleaseAttachment({ await client.repository.repoCreateReleaseAttachment({