Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
5.8 kB · 176 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177import { MakerDMG } from "@electron-forge/maker-dmg";import { MakerSquirrel } from "@electron-forge/maker-squirrel";import { MakerZIP } from "@electron-forge/maker-zip";import type { ForgeConfig, ForgePackagerOptions,} from "@electron-forge/shared-types";// import { MakerDeb } from "@electron-forge/maker-deb";// import { MakerRpm } from "@electron-forge/maker-rpm";import { AutoUnpackNativesPlugin } from "@electron-forge/plugin-auto-unpack-natives";import { FusesPlugin } from "@electron-forge/plugin-fuses";import { WebpackPlugin } from "@electron-forge/plugin-webpack";import { PublisherS3 } from "@electron-forge/publisher-s3";import { FuseV1Options, FuseVersion } from "@electron/fuses";import { MakerAppImage } from "@reforged/maker-appimage";import child_process from "child_process";import fs from "fs";import { mainConfig } from "./webpack.main.config";import { rendererConfig } from "./webpack.renderer.config";
export default async function () { // go get the version from the actual script let version = child_process .execSync("go run ../../pkg/config/git/git.go -v") .toString() .slice(1);
let versionCode = child_process .execSync("go run ../../pkg/config/git/git.go --js") .toString();
fs.writeFileSync("./src/version.ts", versionCode, "utf8");
// https://github.com/Squirrel/Squirrel.Windows/issues/1394#issuecomment-2356692821 // This makes the Desktop app have confusing numbers, but actual relases just use X.Y.Z // so it doesn't really matter. Those are just for testing. if (version.includes("-")) { version = version.replace("-", "-z"); }
const packagerConfig: ForgePackagerOptions = { asar: true, name: "Streamplace", appVersion: version, buildVersion: version, icon: "./assets/images/streamplace-logo", extraResource: ["./assets/images/streamplace-logo.png"], };
const config: ForgeConfig = { packagerConfig: packagerConfig, hooks: { prePackage: async (config, plat, arch) => { let platform = plat; let architecture = arch; if (platform === "win32") { platform = "windows"; } if (architecture === "x64") { architecture = "amd64"; } let binary = `../../build-${platform}-${architecture}/streamplace`; if (platform === "windows") { binary += ".exe"; } const exists = fs.existsSync(binary); if (!exists) { throw new Error( `could not find ${binary} while building electron bundle. do you need to run make ${platform}-${architecture}?`, ); }
if (!config.packagerConfig) { throw new Error("config.packageConfig undefined"); } if (!config.packagerConfig.extraResource) { config.packagerConfig.extraResource = []; } config.packagerConfig.extraResource = [ ...config.packagerConfig.extraResource, binary, ]; }, readPackageJson: async (forgeConfig, packageJson) => { packageJson.version = version; return packageJson; }, }, rebuildConfig: {}, makers: [ new MakerSquirrel({ iconUrl: "https://git.stream.place/-/project/1/uploads/2e5899ffd2b4799ce661cf9b8675e610/streamplace-logo-256.ico", setupIcon: "./assets/images/streamplace-logo.ico", }), new MakerDMG( { icon: "./assets/images/streamplace-logo.icns", appPath: "./Streamplace.app", }, ["darwin"], ), new MakerZIP({}, ["darwin"]), // new MakerRpm({}), new MakerAppImage({ options: { bin: "Streamplace", icon: "./assets/images/streamplace-logo.png", }, }), ], plugins: [ new AutoUnpackNativesPlugin({}), new WebpackPlugin({ mainConfig, packageSourceMaps: true, renderer: { config: rendererConfig, entryPoints: [ { html: "./src/index.html", js: "./src/renderer.ts", name: "main_window", preload: { js: "./src/preload.ts", }, }, ], }, }), // Fuses are used to enable/disable various Electron functionality // at package time, before code signing the application new FusesPlugin({ version: FuseVersion.V1, [FuseV1Options.RunAsNode]: false, [FuseV1Options.EnableCookieEncryption]: true, [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false, [FuseV1Options.EnableNodeCliInspectArguments]: false, [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: false, [FuseV1Options.OnlyLoadAppFromAsar]: true, }), ], publishers: [ new PublisherS3({ endpoint: "http://192.168.8.136:9000", accessKeyId: "minioadmin", secretAccessKey: "minioadmin", public: true, bucket: "streamplace", region: "unused", }), ], }; if ( process.env.NOTARIZATION_TEAM_ID && process.env.NOTARIZATION_EMAIL && process.env.NOTARIZATION_PASSWORD ) { packagerConfig.osxNotarize = { teamId: process.env.NOTARIZATION_TEAM_ID, appleId: process.env.NOTARIZATION_EMAIL, appleIdPassword: process.env.NOTARIZATION_PASSWORD, }; packagerConfig.osxSign = { optionsForFile: (filePath) => { // Here, we keep it simple and return a single entitlements.plist file. // You can use this callback to map different sets of entitlements // to specific files in your packaged app. return { entitlements: "./entitlements.plist", }; }, }; } return config;}