mirror of
https://github.com/Kuingsmile/PicList.git
synced 2025-01-22 22:28:14 -05:00
59 lines
1.7 KiB
JavaScript
59 lines
1.7 KiB
JavaScript
const crypto = require('crypto')
|
|
const os = require('os')
|
|
const path = require('path')
|
|
const axios = require('axios')
|
|
const fs = require('fs-extra')
|
|
const pkg = require('../package.json')
|
|
const version = pkg.version
|
|
|
|
const x64URL = `https://release.piclist.cn/latest/PicList-${version}-x64.dmg`
|
|
const arm64URL = `https://release.piclist.cn/latest/PicList-${version}-arm64.dmg`
|
|
const x64Path = path.join(os.homedir(), 'Downloads', 'PicList-x64.dmg')
|
|
const arm64Path = path.join(os.homedir(), 'Downloads', 'PicList-arm64.dmg')
|
|
|
|
const downloadAndHash = async (url, path) => {
|
|
try {
|
|
const response = await axios({
|
|
method: 'get',
|
|
url,
|
|
responseType: 'stream'
|
|
})
|
|
const writer = fs.createWriteStream(path)
|
|
response.data.pipe(writer)
|
|
|
|
const hash = crypto.createHash('sha256')
|
|
const progressTotal = parseInt(response.headers['content-length'], 10)
|
|
let progressCurrent = 0
|
|
console.log('\n')
|
|
|
|
response.data.on('data', (chunk) => {
|
|
hash.update(chunk)
|
|
progressCurrent += chunk.length
|
|
const progressBar = Math.round(progressCurrent / progressTotal * 100)
|
|
process.stdout.write(`\r${progressBar}% ${path}`)
|
|
})
|
|
|
|
await new Promise((resolve, reject) => {
|
|
response.data.on('end', () => {
|
|
resolve()
|
|
})
|
|
response.data.on('error', (err) => {
|
|
reject(err)
|
|
})
|
|
})
|
|
|
|
console.log(`\n${path} SHA256: ${hash.digest('hex')}`)
|
|
|
|
await fs.remove(path)
|
|
console.log(`Deleted ${path}`)
|
|
} catch (err) {
|
|
console.error(`\nError downloading ${url}: ${err.message}`)
|
|
}
|
|
}
|
|
|
|
downloadAndHash(x64URL, x64Path).then(() => {
|
|
downloadAndHash(arm64URL, arm64Path)
|
|
}).catch(() => {
|
|
downloadAndHash(arm64URL, arm64Path)
|
|
})
|