mirror of
https://wget.la/https://github.com/leookun/cursor-byok
synced 2026-10-06 21:52:51 +08:00
fix: finalize draft releases by asset id
This commit is contained in:
@@ -219,8 +219,18 @@ jobs:
|
|||||||
VERSION: ${{ needs.prepare.outputs.version }}
|
VERSION: ${{ needs.prepare.outputs.version }}
|
||||||
run: |
|
run: |
|
||||||
mkdir -p tauri-update
|
mkdir -p tauri-update
|
||||||
gh release download "v${VERSION}" --pattern latest.json --dir tauri-update
|
release_id=$(
|
||||||
gh api "repos/${GITHUB_REPOSITORY}/releases/tags/v${VERSION}" > tauri-update/release.json
|
gh api "repos/${GITHUB_REPOSITORY}/releases?per_page=100" \
|
||||||
|
--jq ".[] | select(.tag_name == \"v${VERSION}\") | .id"
|
||||||
|
)
|
||||||
|
test -n "${release_id}"
|
||||||
|
gh api "repos/${GITHUB_REPOSITORY}/releases/${release_id}" > tauri-update/release.json
|
||||||
|
asset_id=$(node -p 'require("./tauri-update/release.json").assets.find(({ name }) => name === "latest.json")?.id ?? ""')
|
||||||
|
test -n "${asset_id}"
|
||||||
|
gh api \
|
||||||
|
-H "Accept: application/octet-stream" \
|
||||||
|
"repos/${GITHUB_REPOSITORY}/releases/assets/${asset_id}" \
|
||||||
|
> tauri-update/latest.json
|
||||||
node scripts/release/normalize-tauri-update.mjs \
|
node scripts/release/normalize-tauri-update.mjs \
|
||||||
--manifest tauri-update/latest.json \
|
--manifest tauri-update/latest.json \
|
||||||
--release tauri-update/release.json \
|
--release tauri-update/release.json \
|
||||||
|
|||||||
@@ -36,22 +36,26 @@ export function normalizeTauriUpdate(manifest, release, repository, version) {
|
|||||||
throw new Error("updater manifest has no platforms");
|
throw new Error("updater manifest has no platforms");
|
||||||
}
|
}
|
||||||
|
|
||||||
const assetsByApiUrl = new Map();
|
const assetsBySourceUrl = new Map();
|
||||||
const publicAssetUrls = new Set();
|
const publicAssetUrls = new Set();
|
||||||
for (const asset of release.assets ?? []) {
|
for (const asset of release.assets ?? []) {
|
||||||
if (!asset?.id || !asset?.browser_download_url) continue;
|
if (!asset?.id || !asset?.name) continue;
|
||||||
assetsByApiUrl.set(
|
const publicUrl = `https://github.com/${repository}/releases/download/v${version}/${encodeURIComponent(asset.name)}`;
|
||||||
|
assetsBySourceUrl.set(
|
||||||
`https://api.github.com/repos/${repository}/releases/assets/${asset.id}`,
|
`https://api.github.com/repos/${repository}/releases/assets/${asset.id}`,
|
||||||
asset.browser_download_url,
|
publicUrl,
|
||||||
);
|
);
|
||||||
publicAssetUrls.add(asset.browser_download_url);
|
if (asset.browser_download_url) {
|
||||||
|
assetsBySourceUrl.set(asset.browser_download_url, publicUrl);
|
||||||
|
}
|
||||||
|
publicAssetUrls.add(publicUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const [platform, entry] of Object.entries(manifest.platforms)) {
|
for (const [platform, entry] of Object.entries(manifest.platforms)) {
|
||||||
if (!entry?.signature || !entry?.url) {
|
if (!entry?.signature || !entry?.url) {
|
||||||
throw new Error(`updater platform ${platform} is missing its URL or signature`);
|
throw new Error(`updater platform ${platform} is missing its URL or signature`);
|
||||||
}
|
}
|
||||||
const publicUrl = assetsByApiUrl.get(entry.url) ?? entry.url;
|
const publicUrl = assetsBySourceUrl.get(entry.url) ?? entry.url;
|
||||||
if (!publicAssetUrls.has(publicUrl)) {
|
if (!publicAssetUrls.has(publicUrl)) {
|
||||||
throw new Error(`updater platform ${platform} references an unknown release asset`);
|
throw new Error(`updater platform ${platform} references an unknown release asset`);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user