release.mjs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { createRequire } from "module";
  2. import { getOctokit, context } from "@actions/github";
  3. const require = createRequire(import.meta.url);
  4. /// generate update.json
  5. /// upload to update tag's release asset
  6. async function resolveRelease() {
  7. if (process.env.GITHUB_TOKEN === undefined) {
  8. throw new Error("GITHUB_TOKEN is required");
  9. }
  10. const packageJson = require("../package.json");
  11. const { version } = packageJson;
  12. const urlPrefix = "https://github.com/zzzgydi/clash-verge/releases/download";
  13. const updateData = {
  14. name: `v${version}`,
  15. notes: `Version ${version} is available now!!!`,
  16. pub_date: new Date().toISOString(),
  17. platforms: {
  18. win64: {
  19. signature: "",
  20. url: `${urlPrefix}/v${version}/clash-verge_${version}_x64.msi.zip`,
  21. },
  22. darwin: {
  23. signature: "",
  24. url: `${urlPrefix}/v${version}/clash-verge.app.tar.gz`,
  25. },
  26. },
  27. };
  28. console.log(`Generating Version "${version}" update.json`);
  29. const github = getOctokit(process.env.GITHUB_TOKEN);
  30. const { data: release } = await github.rest.repos.getReleaseByTag({
  31. owner: context.repo.owner,
  32. repo: context.repo.repo,
  33. tag: "updater",
  34. });
  35. const { data: assets } = await github.rest.repos.listReleaseAssets({
  36. owner: context.repo.owner,
  37. repo: context.repo.repo,
  38. release_id: release.id,
  39. });
  40. for (let asset of assets) {
  41. if (asset.name === "update.json") {
  42. await github.rest.repos.deleteReleaseAsset({
  43. owner: context.repo.owner,
  44. repo: context.repo.repo,
  45. asset_id: asset.id,
  46. });
  47. break;
  48. }
  49. }
  50. await github.rest.repos.uploadReleaseAsset({
  51. owner: context.repo.owner,
  52. repo: context.repo.repo,
  53. release_id: release.id,
  54. name: "update.json",
  55. data: JSON.stringify(updateData, null, 2),
  56. });
  57. }
  58. resolveRelease();