aboutsummaryrefslogtreecommitdiffstats
path: root/packages/main/src/infrastructure/resources/impl/getDistResources.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/main/src/infrastructure/resources/impl/getDistResources.ts')
-rw-r--r--packages/main/src/infrastructure/resources/impl/getDistResources.ts59
1 files changed, 59 insertions, 0 deletions
diff --git a/packages/main/src/infrastructure/resources/impl/getDistResources.ts b/packages/main/src/infrastructure/resources/impl/getDistResources.ts
new file mode 100644
index 0000000..f3c3f7b
--- /dev/null
+++ b/packages/main/src/infrastructure/resources/impl/getDistResources.ts
@@ -0,0 +1,59 @@
1/*
2 * Copyright (C) 2022 Kristóf Marussy <kristof@marussy.com>
3 *
4 * This file is part of Sophie.
5 *
6 * Sophie is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as
8 * published by the Free Software Foundation, version 3.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 *
18 * SPDX-License-Identifier: AGPL-3.0-only
19 */
20
21import path from 'node:path';
22import { pathToFileURL, URL } from 'node:url';
23
24import Resources from '../Resources';
25
26export default function getDistResources(
27 devMode: boolean,
28 /*
29 eslint-disable-next-line unicorn/prefer-module --
30 Electron apps run in a commonjs environment, so there is no `import.meta.url`.
31 */
32 thisDir = __dirname,
33 devServerURL = import.meta.env?.VITE_DEV_SERVER_URL,
34): Resources {
35 const packagesRoot = path.join(thisDir, '..', '..');
36
37 function getPath(packageName: string, relativePathInPackage: string): string {
38 return path.join(packagesRoot, packageName, 'dist', relativePathInPackage);
39 }
40
41 function getFileURL(
42 packageName: string,
43 relativePathInPackage: string,
44 ): string {
45 const absolutePath = getPath(packageName, relativePathInPackage);
46 return pathToFileURL(absolutePath).toString();
47 }
48
49 return {
50 getPath,
51 getFileURL,
52 getRendererURL:
53 devMode && devServerURL !== undefined
54 ? (relativePathInRendererPackage) =>
55 new URL(relativePathInRendererPackage, devServerURL).toString()
56 : (relativePathInRendererPackage) =>
57 getFileURL('renderer', relativePathInRendererPackage),
58 };
59}