import { createRequire } from "module"; import { getOctokit, context } from "@actions/github"; const require = createRequire(import.meta.url); /// generate update.json /// upload to update tag's release asset async function resolveRelease() { if (process.env.GITHUB_TOKEN === undefined) { throw new Error("GITHUB_TOKEN is required"); } const packageJson = require("../package.json"); const { version } = packageJson; const urlPrefix = "https://github.com/zzzgydi/clash-verge/releases/download"; const updateData = { name: `v${version}`, notes: `Version ${version} is available now!!!`, pub_date: new Date().toISOString(), platforms: { win64: { signature: "", url: `${urlPrefix}/v${version}/clash-verge_${version}_x64.msi.zip`, }, darwin: { signature: "", url: `${urlPrefix}/v${version}/clash-verge.app.tar.gz`, }, }, }; console.log(`Generating Version "${version}" update.json`); const github = getOctokit(process.env.GITHUB_TOKEN); const { data: release } = await github.rest.repos.getReleaseByTag({ owner: context.repo.owner, repo: context.repo.repo, tag: "updater", }); const { data: assets } = await github.rest.repos.listReleaseAssets({ owner: context.repo.owner, repo: context.repo.repo, release_id: release.id, }); for (let asset of assets) { if (asset.name === "update.json") { await github.rest.repos.deleteReleaseAsset({ owner: context.repo.owner, repo: context.repo.repo, asset_id: asset.id, }); break; } } await github.rest.repos.uploadReleaseAsset({ owner: context.repo.owner, repo: context.repo.repo, release_id: release.id, name: "update.json", data: JSON.stringify(updateData, null, 2), }); } resolveRelease();