2026-06-20 00:34:26 +08:00
|
|
|
import { cpSync, existsSync } from "fs";
|
|
|
|
|
import { join } from "path";
|
|
|
|
|
|
|
|
|
|
const mode = process.argv[2];
|
|
|
|
|
const validModes = ["dev", "beta", "run"];
|
|
|
|
|
|
|
|
|
|
if (!mode || !validModes.includes(mode)) {
|
|
|
|
|
console.error(`Usage: node scripts/switch-icon.js <${validModes.join("|")}>`);
|
|
|
|
|
process.exit(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const root = join(import.meta.dirname, "..");
|
|
|
|
|
const publicDir = join(root, "public");
|
|
|
|
|
const iconsDir = join(root, "src-tauri", "icons");
|
|
|
|
|
|
|
|
|
|
const png = join(publicDir, `${mode}.png`);
|
|
|
|
|
const ico = join(publicDir, `${mode}.ico`);
|
|
|
|
|
|
|
|
|
|
if (!existsSync(png)) {
|
|
|
|
|
console.error(`Icon not found: ${png}`);
|
|
|
|
|
process.exit(1);
|
|
|
|
|
}
|
|
|
|
|
if (!existsSync(ico)) {
|
|
|
|
|
console.error(`Icon not found: ${ico}`);
|
|
|
|
|
process.exit(1);
|
|
|
|
|
}
|
|
|
|
|
|
2026-06-20 02:34:10 +08:00
|
|
|
// Tauri 2 only needs icon.png (source) + icon.ico
|
|
|
|
|
// It auto-generates 32x32, 128x128, 128x128@2x, icns from icon.png during build
|
2026-06-20 00:34:26 +08:00
|
|
|
cpSync(png, join(iconsDir, "icon.png"), { overwrite: true });
|
|
|
|
|
cpSync(ico, join(iconsDir, "icon.ico"), { overwrite: true });
|
|
|
|
|
|
2026-06-20 02:34:10 +08:00
|
|
|
console.log(`[switch-icon] Mode: ${mode} → icon.png + icon.ico updated`);
|