mirror of
https://github.com/OpenListTeam/OpenList-Desktop.git
synced 2025-11-25 03:14:56 +08:00
52 lines
2.0 KiB
JavaScript
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) } : {}
|
|
}
|