65 lines
1.3 KiB
JavaScript
65 lines
1.3 KiB
JavaScript
import axios from "axios";
|
|
|
|
const {
|
|
TAG,
|
|
FORGEJO_API_URL: API,
|
|
FORGEJO_REPOSITORY: REPO,
|
|
FORGEJO_TOKEN: TOKEN,
|
|
CDN_URL,
|
|
} = process.env;
|
|
|
|
async function addReleaseAsset(releaseID, name) {
|
|
return axios.post(
|
|
`${API}/repos/${REPO}/releases/${releaseID}/assets`,
|
|
{ external_url: `${CDN_URL}/${REPO}/${TAG}/${name}`, },
|
|
{
|
|
headers: {
|
|
Authorization: `token ${TOKEN}`,
|
|
"Content-Type": `multipart/form-data`,
|
|
},
|
|
params: { name },
|
|
}
|
|
);
|
|
};
|
|
|
|
async function main() {
|
|
|
|
// Initial Release Data
|
|
const release = await axios.post(
|
|
`${API}/repos/${REPO}/releases`,
|
|
{
|
|
name: TAG,
|
|
tag_name: TAG,
|
|
draft: true,
|
|
hide_archive_links: true,
|
|
},
|
|
{
|
|
headers: { Authorization: `token ${TOKEN}` },
|
|
}
|
|
);
|
|
|
|
try {
|
|
await addReleaseAsset(release.data.id, `release.zip`);
|
|
await addReleaseAsset(release.data.id, `system.json`);
|
|
} catch (e) {
|
|
console.error(`Failed to upload files, deleting draft release`);
|
|
console.error(e);
|
|
|
|
try {
|
|
await axios.delete(
|
|
`${API}/repos/${REPO}/releases/${release.data.id}`,
|
|
{
|
|
headers: { Authorization: `token ${TOKEN}` },
|
|
}
|
|
)
|
|
} catch {
|
|
console.error(`Failed to delete draft release`);
|
|
};
|
|
|
|
process.exit(1);
|
|
};
|
|
|
|
console.log(`Release created, and files uploaded successfully!`);
|
|
};
|
|
|
|
main();
|