app-builder-lib
Version:
electron-builder lib
108 lines • 4.92 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.LibUiFramework = void 0;
const fs_extra_1 = require("fs-extra");
const promises_1 = require("fs/promises");
const path = require("path");
const builder_util_1 = require("builder-util");
const core_1 = require("../core");
const appBuilder_1 = require("../util/appBuilder");
class LibUiFramework {
constructor(version, distMacOsAppName, isUseLaunchUi) {
this.version = version;
this.distMacOsAppName = distMacOsAppName;
this.isUseLaunchUi = isUseLaunchUi;
this.name = "libui";
// noinspection JSUnusedGlobalSymbols
this.macOsDefaultTargets = ["dmg"];
this.defaultAppIdPrefix = "com.libui.";
// noinspection JSUnusedGlobalSymbols
this.isCopyElevateHelper = false;
// noinspection JSUnusedGlobalSymbols
this.isNpmRebuildRequired = false;
}
async prepareApplicationStageDirectory(options) {
await (0, fs_extra_1.emptyDir)(options.appOutDir);
const packager = options.packager;
const platform = packager.platform;
if (this.isUseLaunchUiForPlatform(platform)) {
const appOutDir = options.appOutDir;
await (0, builder_util_1.executeAppBuilder)([
"proton-native",
"--node-version",
this.version,
"--use-launch-ui",
"--platform",
platform.nodeName,
"--arch",
options.arch,
"--stage",
appOutDir,
"--executable",
`${packager.appInfo.productFilename}${platform === core_1.Platform.WINDOWS ? ".exe" : ""}`,
]);
return;
}
if (platform === core_1.Platform.MAC) {
await this.prepareMacosApplicationStageDirectory(packager, options);
}
else if (platform === core_1.Platform.LINUX) {
await this.prepareLinuxApplicationStageDirectory(options);
}
}
async prepareMacosApplicationStageDirectory(packager, options) {
const appContentsDir = path.join(options.appOutDir, this.distMacOsAppName, "Contents");
await (0, promises_1.mkdir)(path.join(appContentsDir, "Resources"), { recursive: true });
await (0, promises_1.mkdir)(path.join(appContentsDir, "MacOS"), { recursive: true });
await (0, builder_util_1.executeAppBuilder)(["proton-native", "--node-version", this.version, "--platform", "darwin", "--stage", path.join(appContentsDir, "MacOS")]);
const appPlist = {
// https://github.com/albe-rosado/create-proton-app/issues/13
NSHighResolutionCapable: true,
};
await packager.applyCommonInfo(appPlist, appContentsDir);
await Promise.all([
(0, appBuilder_1.executeAppBuilderAndWriteJson)(["encode-plist"], { [path.join(appContentsDir, "Info.plist")]: appPlist }),
writeExecutableMain(path.join(appContentsDir, "MacOS", appPlist.CFBundleExecutable), `#!/bin/sh
DIR=$(dirname "$0")
"$DIR/node" "$DIR/../Resources/app/${options.packager.info.metadata.main || "index.js"}"
`),
]);
}
async prepareLinuxApplicationStageDirectory(options) {
const appOutDir = options.appOutDir;
await (0, builder_util_1.executeAppBuilder)(["proton-native", "--node-version", this.version, "--platform", "linux", "--arch", options.arch, "--stage", appOutDir]);
const mainPath = path.join(appOutDir, options.packager.executableName);
await writeExecutableMain(mainPath, `#!/bin/sh
DIR=$(dirname "$0")
"$DIR/node" "$DIR/app/${options.packager.info.metadata.main || "index.js"}"
`);
}
async afterPack(context) {
const packager = context.packager;
if (!this.isUseLaunchUiForPlatform(packager.platform)) {
return;
}
// LaunchUI requires main.js, rename if need
const userMain = packager.info.metadata.main || "index.js";
if (userMain === "main.js") {
return;
}
await (0, promises_1.rename)(path.join(context.appOutDir, "app", userMain), path.join(context.appOutDir, "app", "main.js"));
}
getMainFile(platform) {
return this.isUseLaunchUiForPlatform(platform) ? "main.js" : null;
}
isUseLaunchUiForPlatform(platform) {
return platform === core_1.Platform.WINDOWS || (this.isUseLaunchUi && platform === core_1.Platform.LINUX);
}
getExcludedDependencies(platform) {
// part of launchui
return this.isUseLaunchUiForPlatform(platform) ? ["libui-node"] : null;
}
}
exports.LibUiFramework = LibUiFramework;
async function writeExecutableMain(file, content) {
await (0, promises_1.writeFile)(file, content, { mode: 0o755 });
await (0, promises_1.chmod)(file, 0o755);
}
//# sourceMappingURL=LibUiFramework.js.map
;