Files
clash-proxy/scripts/portable.mjs

53 lines
1.6 KiB
JavaScript
Raw Normal View History

2024-09-20 02:01:36 +08:00
import fs from "fs";
2022-03-13 00:52:31 +08:00
import path from "path";
import AdmZip from "adm-zip";
import { createRequire } from "module";
import fsp from "fs/promises";
2022-03-13 00:52:31 +08:00
2023-12-03 15:35:31 +08:00
const target = process.argv.slice(2)[0];
const ARCH_MAP = {
"x86_64-pc-windows-msvc": "x64",
2023-12-10 17:14:48 +08:00
"aarch64-pc-windows-msvc": "arm64",
2023-12-03 15:35:31 +08:00
};
2024-05-06 19:13:08 +08:00
const PROCESS_MAP = {
x64: "x64",
arm64: "arm64",
};
const arch = target ? ARCH_MAP[target] : PROCESS_MAP[process.arch];
2022-03-13 00:52:31 +08:00
/// Script for ci
/// 打包绿色版/便携版 (only Windows)
2022-04-13 01:17:40 +08:00
async function resolvePortable() {
2022-03-13 00:52:31 +08:00
if (process.platform !== "win32") return;
const releaseDir = target
? `./src-tauri/target/${target}/release`
: `./src-tauri/target/release`;
const configDir = path.join(releaseDir, ".config");
2022-03-13 00:52:31 +08:00
2024-09-20 02:01:36 +08:00
if (!fs.existsSync(releaseDir)) {
2022-03-13 00:52:31 +08:00
throw new Error("could not found the release dir");
}
2024-09-20 02:01:36 +08:00
await fsp.mkdir(configDir, { recursive: true });
if (!fs.existsSync(path.join(configDir, "PORTABLE"))) {
await fsp.writeFile(path.join(configDir, "PORTABLE"), "");
}
2022-03-13 00:52:31 +08:00
const zip = new AdmZip();
zip.addLocalFile(path.join(releaseDir, "clash-verge.exe"));
2024-06-19 10:04:28 +08:00
zip.addLocalFile(path.join(releaseDir, "verge-mihomo.exe"));
zip.addLocalFile(path.join(releaseDir, "verge-mihomo-alpha.exe"));
2022-03-13 00:52:31 +08:00
zip.addLocalFolder(path.join(releaseDir, "resources"), "resources");
zip.addLocalFolder(configDir, ".config");
2022-03-13 00:52:31 +08:00
const require = createRequire(import.meta.url);
const packageJson = require("../package.json");
const { version } = packageJson;
2024-05-06 19:13:08 +08:00
const zipFile = `Clash.Verge_${version}_${arch}_portable.zip`;
2022-03-13 00:52:31 +08:00
zip.writeZip(zipFile);
2022-04-13 01:17:40 +08:00
console.log("[INFO]: create portable zip successfully");
2022-05-17 02:46:15 +08:00
}
2022-11-22 00:16:30 +08:00
resolvePortable().catch(console.error);