mirror of
https://github.com/Kuingsmile/PicList.git
synced 2026-05-11 18:10:32 +08:00
🐛 Fix(custom): fix the double v in version page
This commit is contained in:
86
scripts/auto-winget.js
Normal file
86
scripts/auto-winget.js
Normal file
@@ -0,0 +1,86 @@
|
||||
import dotenv from 'dotenv'
|
||||
import packagej from '../package.json' with { type: 'json' }
|
||||
import * as fsWalk from '@nodelib/fs.walk'
|
||||
import fs from 'fs-extra'
|
||||
import path from 'node:path'
|
||||
import yaml from 'yaml'
|
||||
import axios from 'axios'
|
||||
import { exec } from 'node:child_process'
|
||||
|
||||
dotenv.config()
|
||||
|
||||
const version = packagej.version
|
||||
const walkPath = fsWalk.walkSync('.winget').slice(-1)[0]?.dirent.parentPath
|
||||
const oldVersion = path.basename(walkPath)
|
||||
const targetPath = path.resolve(`${path.dirname(walkPath)}/${version}`)
|
||||
fs.renameSync(walkPath, targetPath)
|
||||
|
||||
const fileList = [
|
||||
path.join(targetPath, 'Kuingsmile.PicList.installer.yaml'),
|
||||
path.join(targetPath, 'Kuingsmile.PicList.locale.en-US.yaml'),
|
||||
path.join(targetPath, 'Kuingsmile.PicList.yaml'),
|
||||
]
|
||||
|
||||
function relaceVersion(filePath) {
|
||||
let content = fs.readFileSync(filePath, 'utf-8')
|
||||
content = content.replaceAll(oldVersion, version)
|
||||
fs.writeFileSync(filePath, content, 'utf-8')
|
||||
}
|
||||
|
||||
fileList.forEach(filePath => {
|
||||
relaceVersion(filePath)
|
||||
})
|
||||
|
||||
const releaseAPI = 'https://api.github.com/repos/Kuingsmile/piclist/releases/latest'
|
||||
|
||||
const response = await axios.get(releaseAPI, {
|
||||
headers: {
|
||||
Accept: 'application/vnd.github+json',
|
||||
},
|
||||
})
|
||||
|
||||
const releaseData = response.data
|
||||
|
||||
const fileNameList = [`PicList-Setup-${version}-arm64.exe`, `PicList-Setup-${version}.exe`]
|
||||
const sha256List = []
|
||||
|
||||
fileNameList.forEach(fileName => {
|
||||
const asset = releaseData.assets.find(a => a.name === fileName)
|
||||
if (asset) {
|
||||
sha256List.push({
|
||||
fileName,
|
||||
sha256: asset.digest.replace('sha256:', '').toUpperCase(),
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
const insatllerContent = yaml.parseDocument(fs.readFileSync(fileList[0], 'utf-8'))
|
||||
const installers = insatllerContent.get('Installers')
|
||||
const updatedInstallers = installers.toJSON().map(installer => {
|
||||
const matched = sha256List.find(
|
||||
item => installer.Architecture === (item.fileName.includes('arm64') ? 'arm64' : 'x64'),
|
||||
)
|
||||
if (matched) {
|
||||
return {
|
||||
...installer,
|
||||
InstallerSha256: matched.sha256,
|
||||
}
|
||||
}
|
||||
return installer
|
||||
})
|
||||
insatllerContent.set('Installers', updatedInstallers)
|
||||
fs.writeFileSync(fileList[0], insatllerContent.toString(), 'utf-8')
|
||||
|
||||
const cmd = `wingetcreate.exe submit -p "PicList v${version}" -t "${process.env.GH_TOKEN}" .\\.winget\\manifests\\k\\Kuingsmile\\PicList\\${version}\\`
|
||||
|
||||
exec(cmd, (error, stdout, stderr) => {
|
||||
if (error) {
|
||||
console.error(`Error executing command: ${error.message}`)
|
||||
return
|
||||
}
|
||||
if (stderr) {
|
||||
console.error(`Command stderr: ${stderr}`)
|
||||
return
|
||||
}
|
||||
console.log(`Command stdout: ${stdout}`)
|
||||
})
|
||||
Reference in New Issue
Block a user