167 lines
5.0 KiB
JavaScript
Executable File
Vendored
167 lines
5.0 KiB
JavaScript
Executable File
Vendored
import pakeJson from '../src-tauri/pake.json' assert { type: 'json' };
|
|
import tauriJson from '../src-tauri/tauri.conf.json' assert { type: 'json' };
|
|
import windowsJson from '../src-tauri/tauri.windows.conf.json' assert { type: 'json' };
|
|
import macosJson from '../src-tauri/tauri.macos.conf.json' assert { type: 'json' };
|
|
import linuxJson from '../src-tauri/tauri.linux.conf.json' assert { type: 'json' };
|
|
|
|
import { writeFileSync, existsSync, copyFileSync } from 'fs';
|
|
import os from 'os';
|
|
|
|
const desktopEntry = `[Desktop Entry]
|
|
Encoding=UTF-8
|
|
Categories=Office
|
|
Exec=com-pake-${process.env.NAME}
|
|
Icon=com-pake-${process.env.NAME}
|
|
Name=com-pake-${process.env.NAME}
|
|
Name[zh_CN]=${process.env.NAME_ZH}
|
|
StartupNotify=true
|
|
Terminal=false
|
|
Type=Application
|
|
`;
|
|
|
|
const variables = {
|
|
url: process.env.URL,
|
|
name: process.env.NAME,
|
|
title: process.env.TITLE,
|
|
nameZh: process.env.NAME_ZH,
|
|
|
|
pakeConfigPath: 'src-tauri/pake.json',
|
|
tauriConfigPath: 'src-tauri/tauri.conf.json',
|
|
identifier: `com.pake.${process.env.NAME}`,
|
|
|
|
linux: {
|
|
configFilePath: 'src-tauri/tauri.linux.conf.json',
|
|
iconPath: `src-tauri/png/${process.env.NAME}_512.png`,
|
|
productName: `com-pake-${process.env.NAME}`,
|
|
defaultIconPath: 'src-tauri/png/icon_512.png',
|
|
icon: [`png/${process.env.NAME}_512.png`],
|
|
desktopEntry,
|
|
desktopEntryPath: `src-tauri/assets/com-pake-${process.env.NAME}.desktop`,
|
|
desktopEntryConfig: {
|
|
configKey: `/usr/share/applications/com-pake-${process.env.NAME}.desktop`,
|
|
configValue: `assets/com-pake-${process.env.NAME}.desktop`,
|
|
},
|
|
},
|
|
macos: {
|
|
configFilePath: 'src-tauri/tauri.macos.conf.json',
|
|
iconPath: `src-tauri/icons/${process.env.NAME}.icns`,
|
|
defaultPath: 'src-tauri/icons/icon.icns',
|
|
icon: [`icons/${process.env.NAME}.icns`],
|
|
},
|
|
windows: {
|
|
configFilePath: 'src-tauri/tauri.windows.conf.json',
|
|
iconPath: `src-tauri/png/${process.env.NAME}_32.ico`,
|
|
defaultPath: 'src-tauri/png/icon_32.ico',
|
|
hdIconPath: `src-tauri/png/${process.env.NAME}_256.ico`,
|
|
hdDefaultPath: 'src-tauri/png/icon_256.ico',
|
|
icon: [`png/${process.env.NAME}_256.ico`, `png/${process.env.NAME}_32.ico`],
|
|
resources: [`png/${process.env.NAME}_32.ico`],
|
|
},
|
|
};
|
|
|
|
validate();
|
|
|
|
updatePakeJson();
|
|
|
|
updateTauriJson();
|
|
|
|
let platformVariables;
|
|
let platformConfig;
|
|
|
|
switch (os.platform()) {
|
|
case 'linux':
|
|
platformVariables = variables.linux;
|
|
platformConfig = linuxJson;
|
|
updateDesktopEntry();
|
|
break;
|
|
case 'darwin':
|
|
platformVariables = variables.macos;
|
|
platformConfig = macosJson;
|
|
break;
|
|
case 'win32':
|
|
platformConfig = windowsJson;
|
|
platformVariables = variables.windows;
|
|
updateResources();
|
|
updateIconFile(platformVariables.hdIconPath, platformVariables.hdDefaultPath);
|
|
break;
|
|
}
|
|
|
|
updateIconFile(platformVariables.iconPath, platformVariables.defaultIconPath);
|
|
|
|
updatePlatformConfig(platformConfig, platformVariables);
|
|
|
|
save();
|
|
|
|
function validate() {
|
|
if (!('URL' in process.env)) {
|
|
console.log('URL is not set');
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log(`URL: ${process.env.URL}`);
|
|
|
|
if (!('NAME' in process.env)) {
|
|
console.log('NAME is not set');
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log(`NAME: ${process.env.NAME}`);
|
|
|
|
if (!('TITLE' in process.env)) {
|
|
console.log('TITLE is not set');
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log(`TITLE: ${process.env.TITLE}`);
|
|
|
|
if (!('NAME_ZH' in process.env)) {
|
|
console.log('NAME_ZH is not set');
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log(`NAME_ZH: ${process.env.NAME_ZH}`);
|
|
}
|
|
|
|
function updatePakeJson() {
|
|
pakeJson.windows[0].url = variables.url;
|
|
}
|
|
|
|
function updateTauriJson() {
|
|
tauriJson.productName = variables.title;
|
|
writeFileSync('src-tauri/tauri.conf.json', JSON.stringify(tauriJson, null, 2));
|
|
}
|
|
|
|
function updateIconFile(iconPath, defaultIconPath) {
|
|
if (!existsSync(iconPath)) {
|
|
console.warn(`Icon for ${process.env.NAME} not found, will use default icon`);
|
|
copyFileSync(defaultIconPath, iconPath);
|
|
}
|
|
}
|
|
|
|
function updatePlatformConfig(platformConfig, platformVariables) {
|
|
platformConfig.bundle['icon'] = platformVariables.icon;
|
|
platformConfig.identifier = variables.identifier;
|
|
}
|
|
|
|
function save() {
|
|
writeFileSync(variables.pakeConfigPath, JSON.stringify(pakeJson, null, 2));
|
|
writeFileSync(variables.tauriConfigPath, JSON.stringify(tauriJson, null, 2));
|
|
|
|
writeFileSync(variables.linux.configFilePath, JSON.stringify(linuxJson, null, 2));
|
|
writeFileSync(platformVariables.configFilePath, JSON.stringify(platformConfig, null, 2));
|
|
|
|
writeFileSync(variables.macos.configFilePath, JSON.stringify(macosJson, null, 2));
|
|
|
|
writeFileSync(variables.windows.configFilePath, JSON.stringify(windowsJson, null, 2));
|
|
}
|
|
|
|
function updateDesktopEntry() {
|
|
linuxJson.bundle.linux.deb.files = {};
|
|
linuxJson.bundle.linux.deb.files[variables.linux.desktopEntryConfig.configKey] = variables.linux.desktopEntryConfig.configValue;
|
|
writeFileSync(variables.linux.desktopEntryPath, variables.linux.desktopEntry);
|
|
}
|
|
|
|
function updateResources() {
|
|
windowsJson.bundle.resources = variables.windows.resources;
|
|
}
|