fork
Configure Feed
Select the types of activity you want to include in your feed.
Live video on the AT Protocol
fork
Configure Feed
Select the types of activity you want to include in your feed.
1import { MakerDMG } from "@electron-forge/maker-dmg";
2import { MakerSquirrel } from "@electron-forge/maker-squirrel";
3import { MakerZIP } from "@electron-forge/maker-zip";
4import type {
5 ForgeConfig,
6 ForgePackagerOptions,
7} from "@electron-forge/shared-types";
8// import { MakerDeb } from "@electron-forge/maker-deb";
9// import { MakerRpm } from "@electron-forge/maker-rpm";
10import { AutoUnpackNativesPlugin } from "@electron-forge/plugin-auto-unpack-natives";
11import { FusesPlugin } from "@electron-forge/plugin-fuses";
12import { WebpackPlugin } from "@electron-forge/plugin-webpack";
13import { PublisherS3 } from "@electron-forge/publisher-s3";
14import { FuseV1Options, FuseVersion } from "@electron/fuses";
15import { MakerAppImage } from "@reforged/maker-appimage";
16import child_process from "child_process";
17import fs from "fs";
18import { mainConfig } from "./webpack.main.config";
19import { rendererConfig } from "./webpack.renderer.config";
20
21export default async function () {
22 // go get the version from the actual script
23 let version = child_process
24 .execSync("go run ../../pkg/config/git/git.go -v")
25 .toString()
26 .slice(1);
27
28 let versionCode = child_process
29 .execSync("go run ../../pkg/config/git/git.go --js")
30 .toString();
31
32 fs.writeFileSync("./src/version.ts", versionCode, "utf8");
33
34 // https://github.com/Squirrel/Squirrel.Windows/issues/1394#issuecomment-2356692821
35 // This makes the Desktop app have confusing numbers, but actual relases just use X.Y.Z
36 // so it doesn't really matter. Those are just for testing.
37 if (version.includes("-")) {
38 version = version.replace("-", "-z");
39 }
40
41 const packagerConfig: ForgePackagerOptions = {
42 asar: true,
43 name: "Streamplace",
44 appVersion: version,
45 buildVersion: version,
46 icon: "./assets/images/streamplace-logo",
47 extraResource: ["./assets/images/streamplace-logo.png"],
48 };
49
50 const config: ForgeConfig = {
51 packagerConfig: packagerConfig,
52 hooks: {
53 prePackage: async (config, plat, arch) => {
54 let platform = plat;
55 let architecture = arch;
56 if (platform === "win32") {
57 platform = "windows";
58 }
59 if (architecture === "x64") {
60 architecture = "amd64";
61 }
62 let binary = `../../build-${platform}-${architecture}/streamplace`;
63 if (platform === "windows") {
64 binary += ".exe";
65 }
66 const exists = fs.existsSync(binary);
67 if (!exists) {
68 throw new Error(
69 `could not find ${binary} while building electron bundle. do you need to run make ${platform}-${architecture}?`,
70 );
71 }
72
73 if (!config.packagerConfig) {
74 throw new Error("config.packageConfig undefined");
75 }
76 if (!config.packagerConfig.extraResource) {
77 config.packagerConfig.extraResource = [];
78 }
79 config.packagerConfig.extraResource = [
80 ...config.packagerConfig.extraResource,
81 binary,
82 ];
83 },
84 readPackageJson: async (forgeConfig, packageJson) => {
85 packageJson.version = version;
86 return packageJson;
87 },
88 },
89 rebuildConfig: {},
90 makers: [
91 new MakerSquirrel({
92 iconUrl:
93 "https://git.stream.place/-/project/1/uploads/2e5899ffd2b4799ce661cf9b8675e610/streamplace-logo-256.ico",
94 setupIcon: "./assets/images/streamplace-logo.ico",
95 }),
96 new MakerDMG(
97 {
98 icon: "./assets/images/streamplace-logo.icns",
99 appPath: "./Streamplace.app",
100 },
101 ["darwin"],
102 ),
103 new MakerZIP({}, ["darwin"]),
104 // new MakerRpm({}),
105 new MakerAppImage({
106 options: {
107 bin: "Streamplace",
108 icon: "./assets/images/streamplace-logo.png",
109 },
110 }),
111 ],
112 plugins: [
113 new AutoUnpackNativesPlugin({}),
114 new WebpackPlugin({
115 mainConfig,
116 packageSourceMaps: true,
117 renderer: {
118 config: rendererConfig,
119 entryPoints: [
120 {
121 html: "./src/index.html",
122 js: "./src/renderer.ts",
123 name: "main_window",
124 preload: {
125 js: "./src/preload.ts",
126 },
127 },
128 ],
129 },
130 }),
131 // Fuses are used to enable/disable various Electron functionality
132 // at package time, before code signing the application
133 new FusesPlugin({
134 version: FuseVersion.V1,
135 [FuseV1Options.RunAsNode]: false,
136 [FuseV1Options.EnableCookieEncryption]: true,
137 [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
138 [FuseV1Options.EnableNodeCliInspectArguments]: false,
139 [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: false,
140 [FuseV1Options.OnlyLoadAppFromAsar]: true,
141 }),
142 ],
143 publishers: [
144 new PublisherS3({
145 endpoint: "http://192.168.8.136:9000",
146 accessKeyId: "minioadmin",
147 secretAccessKey: "minioadmin",
148 public: true,
149 bucket: "streamplace",
150 region: "unused",
151 }),
152 ],
153 };
154 if (
155 process.env.NOTARIZATION_TEAM_ID &&
156 process.env.NOTARIZATION_EMAIL &&
157 process.env.NOTARIZATION_PASSWORD
158 ) {
159 packagerConfig.osxNotarize = {
160 teamId: process.env.NOTARIZATION_TEAM_ID,
161 appleId: process.env.NOTARIZATION_EMAIL,
162 appleIdPassword: process.env.NOTARIZATION_PASSWORD,
163 };
164 packagerConfig.osxSign = {
165 optionsForFile: (filePath) => {
166 // Here, we keep it simple and return a single entitlements.plist file.
167 // You can use this callback to map different sets of entitlements
168 // to specific files in your packaged app.
169 return {
170 entitlements: "./entitlements.plist",
171 };
172 },
173 };
174 }
175 return config;
176}