Files
OpenList-Desktop/scripts/utils.js
2025-06-26 15:09:20 +08:00

52 lines
2.0 KiB
JavaScript

import fs from 'fs-extra'
import { HttpsProxyAgent } from 'https-proxy-agent'
import fetch from 'node-fetch'
export const platformIdentifierMap = {
'x86_64-pc-windows-msvc': 'win32-x64',
'i686-pc-windows-msvc': 'win32-ia32',
'aarch64-pc-windows-msvc': 'win32-arm64',
'x86_64-apple-darwin': 'darwin-x64',
'aarch64-apple-darwin': 'darwin-arm64',
'x86_64-unknown-linux-gnu': 'linux-x64',
'i686-unknown-linux-gnu': 'linux-ia32',
'aarch64-unknown-linux-gnu': 'linux-arm64',
'armv7-unknown-linux-gnueabihf': 'linux-arm'
}
const archMaps = {
'win32-x64': { openlist: 'windows-amd64', rclone: 'windows-amd64' },
'win32-ia32': { openlist: 'windows-386', rclone: 'windows-386' },
'win32-arm64': { openlist: 'windows-arm64', rclone: 'windows-arm64' },
'darwin-x64': { openlist: 'darwin-amd64', rclone: 'osx-amd64' },
'darwin-arm64': { openlist: 'darwin-arm64', rclone: 'osx-arm64' },
'linux-x64': { openlist: 'linux-amd64', rclone: 'linux-amd64' },
'linux-ia32': { openlist: 'linux-386', rclone: 'linux-386' },
'linux-arm64': { openlist: 'linux-arm64', rclone: 'linux-arm64' },
'linux-arm': { openlist: 'linux-arm-7', rclone: 'linux-arm-v7' }
}
export const getOpenlistArchMap = Object.fromEntries(
Object.entries(archMaps).map(([key, { openlist }]) => [
key,
`openlist-${openlist}.${key.startsWith('darwin') || key.startsWith('linux') ? 'tar.gz' : 'zip'}`
])
)
export const getRcloneArchMap = version =>
Object.fromEntries(Object.entries(archMaps).map(([key, { rclone }]) => [key, `rclone-${version}-${rclone}.zip`]))
export async function downloadFile(url, path) {
const response = await fetch(url, {
...getFetchOptions(),
headers: { 'Content-Type': 'application/octet-stream' }
})
await fs.writeFile(path, new Uint8Array(await response.arrayBuffer()))
console.log(`download finished: ${url}`)
}
export const getFetchOptions = () => {
const proxy = process.env.HTTP_PROXY || process.env.http_proxy || process.env.HTTPS_PROXY || process.env.https_proxy
return proxy ? { agent: new HttpsProxyAgent(proxy) } : {}
}