summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-10-17 22:27:54 +0200
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-10-17 22:27:54 +0200
commit3a76f0f33c61f31a04e93ac5b2d7594c25b43c4a (patch)
tree5a7d5fea6c01ae0451fe3978723a7b2fce4b30e8
parent:bug: remove pause (diff)
downloadserver-3a76f0f33c61f31a04e93ac5b2d7594c25b43c4a.tar.xz
:sparkles: config override file
-rw-r--r--.gitignore3
-rw-r--r--util/src/util/Config.ts16
2 files changed, 17 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore
index a09d215a..bd301f07 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,4 +7,5 @@ api/assets/*.css
 database.db
 tsconfig.tsbuildinfo
 files/
-.env
\ No newline at end of file
+.env
+config.json
\ No newline at end of file
diff --git a/util/src/util/Config.ts b/util/src/util/Config.ts
index 704f3f2f..92907d0c 100644
--- a/util/src/util/Config.ts
+++ b/util/src/util/Config.ts
@@ -1,5 +1,10 @@
 import "missing-native-js-functions";
 import { ConfigValue, ConfigEntity, DefaultConfigOptions } from "../entities/Config";
+import path from "path";
+import fs from "fs";
+
+// TODO: yaml instead of json
+const overridePath = path.join(process.cwd(), "config.json");
 
 var config: ConfigValue;
 var pairs: ConfigEntity[];
@@ -12,8 +17,16 @@ export const Config = {
 		if (config) return config;
 		pairs = await ConfigEntity.find();
 		config = pairsToConfig(pairs);
+		config = (config || {}).merge(DefaultConfigOptions);
+
+		try {
+			const overrideConfig = JSON.parse(fs.readFileSync(overridePath, { encoding: "utf8" }));
+			config = overrideConfig.merge(config);
+		} catch (error) {
+			fs.writeFileSync(overridePath, JSON.stringify(config, null, 4));
+		}
 
-		return this.set((config || {}).merge(DefaultConfigOptions));
+		return this.set(config);
 	},
 	get: function get() {
 		return config;
@@ -38,6 +51,7 @@ function applyConfig(val: ConfigValue) {
 		pair.value = obj;
 		return pair.save();
 	}
+	fs.writeFileSync(overridePath, JSON.stringify(val, null, 4));
 
 	return apply(val);
 }