fix: update for mac-arm was not working

Massimo Melina committed Jun 29, 2024 at 13:03 UTC 7773780b22c7b77b793e0d2b64ab45c200fd8621
3 files changed +11 -8
package.json
+4 -4
@@ -27,10 +27,10 @@
27 "dist-bin": "npm run dist-modules && npm run dist-bin-win && npm run dist-bin-linux && npm run dist-bin-mac && npm run dist-bin-mac-arm",
28 "dist-modules": "cp package*.json central.json dist && cd dist && npm ci --omit=dev && cd .. && node prune_modules",
29 "dist-pre": "cd dist && rm -rf node_modules/@node-rs/crc32-*",
30 - "dist-bin-win": "npm run dist-pre && cd dist && npm i -f --no-save --omit=dev @node-rs/crc32-win32-x64-msvc && pkg . --public -C gzip -t node18-win-x64 && zip hfs-windows-$(jq -r .version ../package.json).zip hfs.exe -r plugins && cd ..",
31 - "dist-bin-mac-arm": "npm run dist-pre && cd dist && npm i -f --no-save --omit=dev @node-rs/crc32-darwin-arm64 && pkg . --public -C gzip -t node18-macos-arm64 && zip hfs-mac-arm-$(jq -r .version ../package.json).zip hfs -r plugins && cd ..",
32 - "dist-bin-mac": "npm run dist-pre && cd dist && npm i -f --no-save --omit=dev @node-rs/crc32-darwin-x64 && pkg . --public -C gzip -t node18-macos-x64 && zip hfs-mac-$(jq -r .version ../package.json).zip hfs -r plugins && cd ..",
33 - "dist-bin-linux": "npm run dist-pre && cd dist && npm i -f --no-save --omit=dev @node-rs/crc32-linux-x64-gnu && pkg . --public -C gzip -t node18-linux-x64 && zip hfs-linux-$(jq -r .version ../package.json).zip hfs -r plugins && cd ..",
30 + "dist-bin-win": "npm run dist-pre && cd dist && npm i -f --no-save --omit=dev @node-rs/crc32-win32-x64-msvc && pkg . --public -C gzip -t node18-win-x64 && zip hfs-windows-x64-$(jq -r .version ../package.json).zip hfs.exe -r plugins && cd ..",
31 + "dist-bin-mac-arm": "npm run dist-pre && cd dist && npm i -f --no-save --omit=dev @node-rs/crc32-darwin-arm64 && pkg . --public -C gzip -t node18-macos-arm64 && zip hfs-mac-arm64-$(jq -r .version ../package.json).zip hfs -r plugins && cd ..",
32 + "dist-bin-mac": "npm run dist-pre && cd dist && npm i -f --no-save --omit=dev @node-rs/crc32-darwin-x64 && pkg . --public -C gzip -t node18-macos-x64 && zip hfs-mac-x64-$(jq -r .version ../package.json).zip hfs -r plugins && cd ..",
33 + "dist-bin-linux": "npm run dist-pre && cd dist && npm i -f --no-save --omit=dev @node-rs/crc32-linux-x64-gnu && pkg . --public -C gzip -t node18-linux-x64 && zip hfs-linux-x64-$(jq -r .version ../package.json).zip hfs -r plugins && cd ..",
34 "dist-win": "npm run dist-modules && npm run dist-bin-win",
35 "dist-mac-arm": "npm run dist-modules && npm run dist-bin-mac-arm",
36 "dist-mac": "npm run dist-modules && npm run dist-bin-mac",
src/const.ts
+1 -1
@@ -51,5 +51,5 @@ console.log('cwd', process.cwd())
51 if (APP_PATH !== process.cwd())
52 console.log('app', APP_PATH)
53 console.log('node', process.version)
54 -console.log('platform', process.platform)
54 +console.log('platform', process.platform, process.arch)
55 console.log('pid', process.pid)
src/update.ts
+6 -3
@@ -4,7 +4,7 @@ import { getRepoInfo } from './github'
4 import { argv, HFS_REPO, IS_BINARY, IS_WINDOWS, RUNNING_BETA } from './const'
5 import { dirname, join } from 'path'
6 import { spawn, spawnSync } from 'child_process'
7 -import { exists, httpStream, unzip } from './misc'
7 +import { exists, httpStream, prefix, unzip, xlate } from './misc'
8 import { createReadStream, renameSync, unlinkSync } from 'fs'
9 import { pluginsWatcher } from './plugins'
10 import { access, chmod, stat } from 'fs/promises'
@@ -84,10 +84,13 @@ export async function update(tagOrUrl: string='') {
84 }) as Release | undefined
85 if (!update)
86 throw "update not found"
87 - const assetSearch = ({ win32: 'windows', darwin: 'mac', linux: 'linux' } as any)[process.platform]
87 + const plat = '-' + xlate(process.platform, { win32: 'windows', darwin: 'mac' })
88 + const assetSearch = `${plat}-${process.arch}.zip`
89 + const legacyAssetSearch = `${plat}${prefix('-', xlate(process.arch, { x64: '', arm64: 'arm' }))}.zip` // legacy pre-0.53.0-rc16
90 if (!assetSearch)
91 throw "this feature doesn't support your platform: " + process.platform
90 - const asset = update.assets.find((x: any) => x.name.endsWith('.zip') && x.name.includes(assetSearch))
92 + const asset = update.assets.find((x: any) => x.name.endsWith(assetSearch))
93 + || update.assets.find((x: any) => x.name.endsWith(legacyAssetSearch))
94 if (!asset)
95 throw "asset not found"
96 const url = asset.browser_download_url