mirror of
https://github.com/cinnyapp/cinny-desktop.git
synced 2024-12-26 17:36:06 +00:00
8921baf41a
* wip * Universal macos workflow and fix windows workflow * fix path for macos and use diff rust action
108 lines
3.4 KiB
JavaScript
108 lines
3.4 KiB
JavaScript
import fetch from "node-fetch";
|
|
import { getOctokit, context } from "@actions/github";
|
|
|
|
async function getAssetSign(url) {
|
|
const response = await fetch(url, {
|
|
method: "GET",
|
|
headers: {
|
|
"Content-Type": "application/octet-stream",
|
|
},
|
|
});
|
|
|
|
return response.text();
|
|
}
|
|
|
|
async function createTauriRelease() {
|
|
if (process.env.GITHUB_TOKEN === undefined) {
|
|
throw new Error("GITHUB_TOKEN is not found!");
|
|
}
|
|
|
|
const github = getOctokit(process.env.GITHUB_TOKEN);
|
|
const { repos } = github.rest;
|
|
const repoMetaData = {
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
};
|
|
|
|
const tagsResult = await repos.listTags({ ...repoMetaData, per_page: 10, page: 1 });
|
|
const latestTag = tagsResult.data.find((tag) => tag.name.startsWith("v"));
|
|
console.log(latestTag);
|
|
|
|
const latestRelease = await repos.getReleaseByTag({ ...repoMetaData, tag: latestTag.name });
|
|
const latestAssets = latestRelease.data.assets;
|
|
|
|
const windowsX86_64 = {};
|
|
const linuxX86_64 = {};
|
|
const darwinX86_64 = {};
|
|
const darwinAarch64 = {};
|
|
|
|
const promises = latestAssets.map(async (asset) => {
|
|
const { name, browser_download_url } = asset;
|
|
|
|
if (/\.msi\.zip$/.test(name)) {
|
|
windowsX86_64.url = browser_download_url;
|
|
}
|
|
if (/\.msi\.zip\.sig$/.test(name)) {
|
|
windowsX86_64.signature = await getAssetSign(browser_download_url);
|
|
}
|
|
|
|
if (/\.AppImage\.tar\.gz$/.test(name)) {
|
|
linuxX86_64.url = browser_download_url;
|
|
}
|
|
if (/\.AppImage\.tar\.gz\.sig$/.test(name)) {
|
|
linuxX86_64.signature = await getAssetSign(browser_download_url);
|
|
}
|
|
|
|
if (/universal\.app\.tar\.gz$/.test(name)) {
|
|
darwinX86_64.url = browser_download_url;
|
|
}
|
|
if (/universal\.app\.tar\.gz\.sig$/.test(name)) {
|
|
darwinX86_64.signature = await getAssetSign(browser_download_url);
|
|
}
|
|
|
|
if (/universal\.app\.tar\.gz$/.test(name)) {
|
|
darwinAarch64.url = browser_download_url;
|
|
}
|
|
if (/universal\.app\.tar\.gz\.sig$/.test(name)) {
|
|
darwinAarch64.signature = await getAssetSign(browser_download_url);
|
|
}
|
|
});
|
|
|
|
await Promise.allSettled(promises);
|
|
|
|
const releaseData = {
|
|
name: latestTag.name,
|
|
notes: `https://github.com/${repoMetaData.owner}/${repoMetaData.repo}/releases/tag/${latestTag.name}`,
|
|
pub_date: new Date().toISOString(),
|
|
platforms: {},
|
|
};
|
|
|
|
if (windowsX86_64.url) releaseData.platforms["windows-x86_64"] = windowsX86_64;
|
|
else console.error('Failed to get release for windowsX86_64');
|
|
|
|
if (linuxX86_64.url) releaseData.platforms["linux-x86_64"] = linuxX86_64;
|
|
else console.error('Failed to get release for linuxX86_64');
|
|
|
|
if (darwinX86_64.url) releaseData.platforms["darwin-x86_64"] = darwinX86_64;
|
|
else console.error('Failed to get release for darwinX86_64');
|
|
|
|
if (darwinAarch64.url) releaseData.platforms["darwin-aarch64"] = darwinAarch64;
|
|
else console.error('Failed to get release for darwinAarch64');
|
|
|
|
const releaseResult = await repos.getReleaseByTag({ ...repoMetaData, tag: 'tauri' });
|
|
const tauriRelease = releaseResult.data;
|
|
|
|
const prevReleaseAsset = tauriRelease.assets.find((asset) => asset.name === 'release.json');
|
|
if (prevReleaseAsset) {
|
|
await repos.deleteReleaseAsset({ ...repoMetaData, asset_id: prevReleaseAsset.id });
|
|
}
|
|
|
|
console.log(releaseData);
|
|
await repos.uploadReleaseAsset({
|
|
...repoMetaData,
|
|
release_id: tauriRelease.id,
|
|
name: 'release.json',
|
|
data: JSON.stringify(releaseData, null, 2),
|
|
});
|
|
}
|
|
createTauriRelease(); |