From ff4b4dd8229ebf3de630c141dff189b5ed5bb7fb Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Thu, 3 Sep 2026 11:28:00 +0800 Subject: [PATCH] chore: cleanup build script --- .github/workflows/autobuild.yml | 5 -- .github/workflows/release.yml | 5 -- package.json | 4 -- scripts/fix-alpha_version.mjs | 46 ------------ scripts/portable-fixed-webview2.mjs | 104 ---------------------------- scripts/portable.mjs | 53 -------------- scripts/publish-version.mjs | 79 --------------------- 7 files changed, 296 deletions(-) delete mode 100644 scripts/fix-alpha_version.mjs delete mode 100644 scripts/portable-fixed-webview2.mjs delete mode 100644 scripts/portable.mjs delete mode 100644 scripts/publish-version.mjs diff --git a/.github/workflows/autobuild.yml b/.github/workflows/autobuild.yml index d31c01140..adedbac8c 100644 --- a/.github/workflows/autobuild.yml +++ b/.github/workflows/autobuild.yml @@ -496,11 +496,6 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} files: target/${{ matrix.target }}/release/bundle/nsis/*setup* - - name: Portable Bundle - run: pnpm portable-fixed-webview2 ${{ matrix.target }} --${{ env.TAG_NAME }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - notify-telegram: name: Notify Telegram runs-on: ubuntu-latest diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6e2baad89..df1ec288d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -532,11 +532,6 @@ jobs: gh release upload "${{ github.ref_name }}" $files --clobber if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } - - name: Portable Bundle - run: pnpm portable-fixed-webview2 ${{ matrix.target }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - release-update: if: ${{ !contains(github.ref_name, '-rc') }} name: Release Update diff --git a/package.json b/package.json index ddbb7bc0d..c468690a6 100644 --- a/package.json +++ b/package.json @@ -19,13 +19,9 @@ "prebuild": "node scripts/prebuild.mjs", "updater": "node scripts/updater.mjs", "updater-fixed-webview2": "node scripts/updater-fixed-webview2.mjs", - "portable": "node scripts/portable.mjs", - "portable-fixed-webview2": "node scripts/portable-fixed-webview2.mjs", - "fix-alpha-version": "node scripts/fix-alpha_version.mjs", "release-version": "node scripts/release-version.mjs", "release:autobuild": "pnpm release-version autobuild", "release:deploytest": "pnpm release-version deploytest", - "publish-version": "node scripts/publish-version.mjs", "eslint": "pnpm lint", "lint": "eslint -c eslint.config.ts --max-warnings=0 --cache --cache-location .eslintcache src", "lint:fix": "eslint -c eslint.config.ts --max-warnings=0 --cache --cache-location .eslintcache --fix src", diff --git a/scripts/fix-alpha_version.mjs b/scripts/fix-alpha_version.mjs deleted file mode 100644 index 92acedbcb..000000000 --- a/scripts/fix-alpha_version.mjs +++ /dev/null @@ -1,46 +0,0 @@ -import { exec } from 'child_process' -import fs from 'fs/promises' -import path from 'path' -import { promisify } from 'util' - -const execPromise = promisify(exec) - -async function getLatestCommitHash() { - try { - const { stdout } = await execPromise('git rev-parse HEAD') - const commitHash = stdout.trim() - const formathash = commitHash.substring(0, 7) - console.log(`Found the latest commit hash code: ${commitHash}`) - return formathash - } catch (error) { - console.error('pnpm run fix-alpha-version ERROR', error) - } -} - -async function updatePackageVersion(newVersion) { - const _dirname = process.cwd() - const packageJsonPath = path.join(_dirname, 'package.json') - try { - const data = await fs.readFile(packageJsonPath, 'utf8') - const packageJson = JSON.parse(data) - let result = packageJson.version.replace('alpha', newVersion) - if (!packageJson.version.includes(`alpha-`)) { - result = packageJson.version.replace('alpha', `alpha-${newVersion}`) - } else { - result = packageJson.version.replace(/alpha-[^-]*/, `alpha-${newVersion}`) - } - console.log('[INFO]: Current version is: ', result) - packageJson.version = result - await fs.writeFile( - packageJsonPath, - JSON.stringify(packageJson, null, 2), - 'utf8', - ) - console.log(`[INFO]: Alpha version update to: ${newVersion}`) - } catch (error) { - console.error('pnpm run fix-alpha-version ERROR', error) - } -} - -const newVersion = await getLatestCommitHash() -updatePackageVersion(newVersion).catch(console.error) diff --git a/scripts/portable-fixed-webview2.mjs b/scripts/portable-fixed-webview2.mjs deleted file mode 100644 index 3f9ec0357..000000000 --- a/scripts/portable-fixed-webview2.mjs +++ /dev/null @@ -1,104 +0,0 @@ -import fs from 'fs' -import fsp from 'fs/promises' -import { createRequire } from 'module' -import path from 'path' - -import { context, getOctokit } from '@actions/github' -import AdmZip from 'adm-zip' - -const target = process.argv.slice(2)[0] -const alpha = process.argv.slice(2)[1] - -const ARCH_MAP = { - 'x86_64-pc-windows-msvc': 'x64', - 'i686-pc-windows-msvc': 'x86', - 'aarch64-pc-windows-msvc': 'arm64', -} - -const PROCESS_MAP = { - x64: 'x64', - ia32: 'x86', - arm64: 'arm64', -} -const arch = target ? ARCH_MAP[target] : PROCESS_MAP[process.arch] -/// Script for ci -/// 打包绿色版/便携版 (only Windows) -async function resolvePortable() { - if (process.platform !== 'win32') return - - const releaseDir = target - ? `./src-tauri/target/${target}/release` - : `./src-tauri/target/release` - - const configDir = path.join(releaseDir, '.config') - - if (!fs.existsSync(releaseDir)) { - throw new Error('could not found the release dir') - } - - await fsp.mkdir(configDir, { recursive: true }) - if (!fs.existsSync(path.join(configDir, 'PORTABLE'))) { - await fsp.writeFile(path.join(configDir, 'PORTABLE'), '') - } - - const zip = new AdmZip() - - zip.addLocalFile(path.join(releaseDir, 'Clash Verge.exe')) - zip.addLocalFile(path.join(releaseDir, 'verge-mihomo.exe')) - zip.addLocalFile(path.join(releaseDir, 'verge-mihomo-alpha.exe')) - zip.addLocalFolder(path.join(releaseDir, 'resources'), 'resources') - zip.addLocalFolder( - path.join( - releaseDir, - `Microsoft.WebView2.FixedVersionRuntime.133.0.3065.92.${arch}`, - ), - `Microsoft.WebView2.FixedVersionRuntime.133.0.3065.92.${arch}`, - ) - zip.addLocalFolder(configDir, '.config') - - const require = createRequire(import.meta.url) - const packageJson = require('../package.json') - const { version } = packageJson - - const zipFile = `Clash.Verge_${version}_${arch}_fixed_webview2_portable.zip` - zip.writeZip(zipFile) - - console.log('[INFO]: create portable zip successfully') - - // push release assets - if (process.env.GITHUB_TOKEN === undefined) { - throw new Error('GITHUB_TOKEN is required') - } - - const options = { owner: context.repo.owner, repo: context.repo.repo } - const github = getOctokit(process.env.GITHUB_TOKEN) - const tag = alpha ? 'alpha' : process.env.TAG_NAME || `v${version}` - console.log('[INFO]: upload to ', tag) - - const { data: release } = await github.rest.repos.getReleaseByTag({ - ...options, - tag, - }) - - const assets = release.assets.filter((x) => { - return x.name === zipFile - }) - if (assets.length > 0) { - const id = assets[0].id - await github.rest.repos.deleteReleaseAsset({ - ...options, - asset_id: id, - }) - } - - console.log(release.name) - - await github.rest.repos.uploadReleaseAsset({ - ...options, - release_id: release.id, - name: zipFile, - data: zip.toBuffer(), - }) -} - -resolvePortable().catch(console.error) diff --git a/scripts/portable.mjs b/scripts/portable.mjs deleted file mode 100644 index b306b2fe7..000000000 --- a/scripts/portable.mjs +++ /dev/null @@ -1,53 +0,0 @@ -import fs from 'fs' -import fsp from 'fs/promises' -import { createRequire } from 'module' -import path from 'path' - -import AdmZip from 'adm-zip' - -const target = process.argv.slice(2)[0] -const ARCH_MAP = { - 'x86_64-pc-windows-msvc': 'x64', - 'aarch64-pc-windows-msvc': 'arm64', -} - -const PROCESS_MAP = { - x64: 'x64', - arm64: 'arm64', -} -const arch = target ? ARCH_MAP[target] : PROCESS_MAP[process.arch] -/// Script for ci -/// 打包绿色版/便携版 (only Windows) -async function resolvePortable() { - if (process.platform !== 'win32') return - - const releaseDir = target - ? `./src-tauri/target/${target}/release` - : `./src-tauri/target/release` - const configDir = path.join(releaseDir, '.config') - - if (!fs.existsSync(releaseDir)) { - throw new Error('could not found the release dir') - } - - await fsp.mkdir(configDir, { recursive: true }) - if (!fs.existsSync(path.join(configDir, 'PORTABLE'))) { - await fsp.writeFile(path.join(configDir, 'PORTABLE'), '') - } - const zip = new AdmZip() - - zip.addLocalFile(path.join(releaseDir, 'clash-verge.exe')) - zip.addLocalFile(path.join(releaseDir, 'verge-mihomo.exe')) - zip.addLocalFile(path.join(releaseDir, 'verge-mihomo-alpha.exe')) - zip.addLocalFolder(path.join(releaseDir, 'resources'), 'resources') - zip.addLocalFolder(configDir, '.config') - - const require = createRequire(import.meta.url) - const packageJson = require('../package.json') - const { version } = packageJson - const zipFile = `Clash.Verge_${version}_${arch}_portable.zip` - zip.writeZip(zipFile) - console.log('[INFO]: create portable zip successfully') -} - -resolvePortable().catch(console.error) diff --git a/scripts/publish-version.mjs b/scripts/publish-version.mjs deleted file mode 100644 index 85897549b..000000000 --- a/scripts/publish-version.mjs +++ /dev/null @@ -1,79 +0,0 @@ -import { execFileSync, spawn } from 'child_process' -import { existsSync, readFileSync } from 'fs' -import path from 'path' - -const rootDir = process.cwd() -const scriptPath = path.join(rootDir, 'scripts', 'release-version.mjs') - -if (!existsSync(scriptPath)) { - console.error('release-version.mjs not found!') - process.exit(1) -} - -const versionArg = process.argv[2] -if (!versionArg) { - console.error('Usage: pnpm publish-version ') - process.exit(1) -} - -const runRelease = () => - new Promise((resolve, reject) => { - const child = spawn('node', [scriptPath, versionArg], { stdio: 'inherit' }) - child.on('exit', (code) => { - if (code === 0) resolve() - else reject(new Error('release-version failed')) - }) - }) - -function isSemver(version) { - return /^v?\d+\.\d+\.\d+(-(alpha|beta|rc)(\.\d+)?)?(\+[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*)?$/i.test( - version, - ) -} - -function normalizeVersion(version) { - return version.startsWith('v') ? version : `v${version}` -} - -function readPackageVersion() { - const pkg = JSON.parse( - readFileSync(path.join(rootDir, 'package.json'), 'utf8'), - ) - return pkg.version -} - -function validateTag(tag) { - if (!isSemver(tag)) { - console.error(`[ERROR]: Invalid git tag: ${tag}`) - process.exit(1) - } -} - -async function run() { - await runRelease() - - let tag = null - if (versionArg === 'alpha') { - tag = normalizeVersion(readPackageVersion()) - } else if (isSemver(versionArg)) { - // 1.2.3、v1.2.3、1.2.3-beta.1 或 1.2.3+build.1 - tag = normalizeVersion(versionArg) - } - - if (tag) { - validateTag(tag) - - try { - execFileSync('git', ['tag', tag], { stdio: 'inherit' }) - execFileSync('git', ['push', 'origin', tag], { stdio: 'inherit' }) - console.log(`[INFO]: Git tag ${tag} created and pushed.`) - } catch { - console.error(`[ERROR]: Failed to create or push git tag: ${tag}`) - process.exit(1) - } - } else { - console.log('[INFO]: No git tag created for this version.') - } -} - -run()