aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-26 13:16:55 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-26 13:16:55 +0100
commitff9eb579ee93432660182ecde52d753bfcd5e4a1 (patch)
treec687e88f9cd10d3ccd2570d7363901111a5c71c0
parentrefactor: Improved config reloading (diff)
downloadsophie-ff9eb579ee93432660182ecde52d753bfcd5e4a1.tar.gz
sophie-ff9eb579ee93432660182ecde52d753bfcd5e4a1.tar.zst
sophie-ff9eb579ee93432660182ecde52d753bfcd5e4a1.zip
feat: Switch to json5 config format
-rw-r--r--packages/main/package.json1
-rw-r--r--packages/main/src/index.ts9
-rw-r--r--yarn.lock1
3 files changed, 8 insertions, 3 deletions
diff --git a/packages/main/package.json b/packages/main/package.json
index 4185793..96cd52c 100644
--- a/packages/main/package.json
+++ b/packages/main/package.json
@@ -13,6 +13,7 @@
13 "@sophie/service-shared": "workspace:*", 13 "@sophie/service-shared": "workspace:*",
14 "@sophie/shared": "workspace:*", 14 "@sophie/shared": "workspace:*",
15 "electron": "16.0.5", 15 "electron": "16.0.5",
16 "json5": "^2.2.0",
16 "mobx": "^6.3.10", 17 "mobx": "^6.3.10",
17 "mobx-state-tree": "^5.1.0" 18 "mobx-state-tree": "^5.1.0"
18 }, 19 },
diff --git a/packages/main/src/index.ts b/packages/main/src/index.ts
index 605c17c..8055ce2 100644
--- a/packages/main/src/index.ts
+++ b/packages/main/src/index.ts
@@ -32,6 +32,7 @@ import {
32 watch, 32 watch,
33 writeFile, 33 writeFile,
34} from 'fs/promises'; 34} from 'fs/promises';
35import JSON5 from 'json5';
35import { autorun } from 'mobx'; 36import { autorun } from 'mobx';
36import { 37import {
37 applySnapshot, 38 applySnapshot,
@@ -127,7 +128,7 @@ nativeTheme.on('updated', () => {
127}); 128});
128 129
129const userDataDir = app.getPath('userData'); 130const userDataDir = app.getPath('userData');
130const configFileName = 'config.json'; 131const configFileName = 'config.json5';
131const configPath = join(userDataDir, configFileName); 132const configPath = join(userDataDir, configFileName);
132let loadingConfig = false; 133let loadingConfig = false;
133let savingConfig = false; 134let savingConfig = false;
@@ -146,7 +147,7 @@ async function loadConfig(): Promise<void> {
146 } 147 }
147 let configSnapshot: unknown; 148 let configSnapshot: unknown;
148 try { 149 try {
149 configSnapshot = JSON.parse(configStr); 150 configSnapshot = JSON5.parse(configStr);
150 } catch (err) { 151 } catch (err) {
151 console.error('Invalid config file', configPath, err); 152 console.error('Invalid config file', configPath, err);
152 return; 153 return;
@@ -162,7 +163,9 @@ async function loadConfig(): Promise<void> {
162} 163}
163 164
164async function saveConfig(configSnapshot: ConfigSnapshotOut): Promise<void> { 165async function saveConfig(configSnapshot: ConfigSnapshotOut): Promise<void> {
165 const configJson = JSON.stringify(configSnapshot, null, 2); 166 const configJson = JSON5.stringify(configSnapshot, {
167 space: 2,
168 });
166 savingConfig = true; 169 savingConfig = true;
167 try { 170 try {
168 await writeFile(configPath, configJson, 'utf8'); 171 await writeFile(configPath, configJson, 'utf8');
diff --git a/yarn.lock b/yarn.lock
index 717f18a..8e929b7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -841,6 +841,7 @@ __metadata:
841 "@types/node": ^17.0.4 841 "@types/node": ^17.0.4
842 electron: 16.0.5 842 electron: 16.0.5
843 electron-devtools-installer: ^3.2.0 843 electron-devtools-installer: ^3.2.0
844 json5: ^2.2.0
844 mobx: ^6.3.10 845 mobx: ^6.3.10
845 mobx-state-tree: ^5.1.0 846 mobx-state-tree: ^5.1.0
846 rimraf: ^3.0.2 847 rimraf: ^3.0.2