| 
									
										
										
										
											2025-04-19 00:45:39 +03:00
										 |  |  | import { execSync } from "child_process"; | 
					
						
							| 
									
										
										
										
											2025-04-18 18:14:40 +03:00
										 |  |  | import fs from "fs-extra"; | 
					
						
							|  |  |  | import path from "path"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const DEST_DIR = "./build"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const VERBOSE = process.env.VERBOSE; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function log(...args: any[]) { | 
					
						
							|  |  |  |     if (VERBOSE) { | 
					
						
							|  |  |  |         console.log(...args); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try { | 
					
						
							| 
									
										
										
										
											2025-04-20 23:10:24 +03:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Copy the commons. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     fs.copySync("../../packages/commons/build", path.join(DEST_DIR, "node_modules", "@triliumnext/commons")); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-19 00:17:36 +03:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Copy the server. | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2025-04-19 00:45:39 +03:00
										 |  |  |     fs.copySync("../server/build", path.join(DEST_DIR, "node_modules", "@triliumnext/server")); | 
					
						
							| 
									
										
										
										
											2025-04-19 00:17:36 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-19 12:34:24 +03:00
										 |  |  |     copyPackageJson(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-19 00:17:36 +03:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Copy assets. | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2025-04-18 18:14:40 +03:00
										 |  |  |     const assetsToCopy = new Set([ | 
					
						
							| 
									
										
										
										
											2025-04-19 12:34:24 +03:00
										 |  |  |         "./forge.config.cjs", | 
					
						
							| 
									
										
										
										
											2025-04-19 00:20:18 +03:00
										 |  |  |         "./scripts/electron-forge/desktop.ejs", | 
					
						
							|  |  |  |         "./scripts/electron-forge/sign-windows.cjs", | 
					
						
							| 
									
										
										
										
											2025-04-18 18:14:40 +03:00
										 |  |  |     ]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     for (const asset of assetsToCopy) { | 
					
						
							|  |  |  |         log(`Copying ${asset}`); | 
					
						
							|  |  |  |         fs.copySync(asset, path.join(DEST_DIR, asset)); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Directories to be copied relative to the project root into <resource_dir>/src/public/app-dist. | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2025-04-19 00:20:18 +03:00
										 |  |  |     const publicDirsToCopy = ["../server/src/public/app/doc_notes"]; | 
					
						
							| 
									
										
										
										
											2025-04-18 18:14:40 +03:00
										 |  |  |     const PUBLIC_DIR = path.join(DEST_DIR, "src", "public", "app-dist"); | 
					
						
							|  |  |  |     for (const dir of publicDirsToCopy) { | 
					
						
							|  |  |  |         fs.copySync(dir, path.join(PUBLIC_DIR, path.basename(dir))); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     console.log("Copying complete!") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } catch(err) { | 
					
						
							| 
									
										
										
										
											2025-04-19 12:34:24 +03:00
										 |  |  |     console.error("Error during copy:", err) | 
					
						
							| 
									
										
										
										
											2025-04-18 18:14:40 +03:00
										 |  |  |     process.exit(1) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-19 12:34:24 +03:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Rewrite the name field of `package.json` since electron-forge does not support forward slashes in the name. | 
					
						
							|  |  |  |  * Other attempts to rewrite the name field in the forge config have failed. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | function copyPackageJson() { | 
					
						
							|  |  |  |     const packageJsonPath = path.join("package.json"); | 
					
						
							|  |  |  |     const packageJson = fs.readJSONSync(packageJsonPath); | 
					
						
							|  |  |  |     packageJson.name = "trilium"; | 
					
						
							|  |  |  |     fs.writeJSONSync(path.join(DEST_DIR, "package.json"), packageJson, { spaces: 2 }); | 
					
						
							|  |  |  | } |