From a63f0e02d9c19937f7becf8f5327e9d830c8f7bb Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 17 Nov 2025 21:43:57 -0700 Subject: [PATCH] Move uploading into a helper function and improve error handling --- scripts/createForgejoRelease.mjs | 48 ++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/scripts/createForgejoRelease.mjs b/scripts/createForgejoRelease.mjs index 07ef65b..6390e0f 100644 --- a/scripts/createForgejoRelease.mjs +++ b/scripts/createForgejoRelease.mjs @@ -8,6 +8,19 @@ const { FORGEJO_TOKEN: TOKEN, } = process.env; +async function uploadFile(releaseID, localPath, remoteName = undefined) { + remoteName ??= localPath.split(`/`).at(-1); + const stream = createReadStream(localPath); + return axios.post( + `${API}/repos/${REPO}/releases/${releaseID}/assets`, + stream, + { + headers: { Authorization: `token ${TOKEN}` }, + params: { name: remoteName }, + } + ) +}; + async function main() { // Initial Release Data @@ -24,25 +37,24 @@ async function main() { } ); - // Upload the release archive - const archive = createReadStream(`release.zip`); - await axios.post( - `${API}/repos/${REPO}/releases/${release.data.id}/assets`, - archive, - { - headers: { Authorization: `token ${TOKEN}` }, - } - ); + try { + await uploadFile(release.data.id, `release.zip`); + await uploadFile(release.data.id, `system.json`); + } catch (e) { + console.error(`Failed to upload files, deleting draft release`); + console.error(e); - // Upload the manifest file - const manifest = createReadStream(`system.json`); - await axios.post( - `${API}/repos/${REPO}/releases/${release.data.id}/assets`, - manifest, - { - headers: { Authorization: `token ${TOKEN}`, }, - } - ); + try { + await axios.delete( + `${API}/repos/${REPO}/releases/${release.data.id}`, + { + headers: { Authorization: `token ${TOKEN}` }, + } + ) + } catch { + console.error(`Failed to delete draft release`); + }; + }; }; main();