diff --git a/src/config.nim b/src/config.nim new file mode 100644 index 0000000..34cd1f3 --- /dev/null +++ b/src/config.nim @@ -0,0 +1,23 @@ +import parsecfg except Config +import os, net, types, strutils + +proc get[T](config: parseCfg.Config; s, v: string; default: T): T = + let val = config.getSectionValue(s, v) + if val.len == 0: return default + + when T is int: parseInt(val) + elif T is bool: parseBool(val) + elif T is string: val + +proc getConfig*(path: string): Config = + var cfg = loadConfig(path) + + Config( + address: cfg.get("Server", "address", "0.0.0.0"), + port: cfg.get("Server", "port", 8080), + title: cfg.get("Server", "title", "Nitter"), + staticDir: cfg.get("Server", "staticDir", "./public"), + + cacheDir: cfg.get("Cache", "directory", "/tmp/nitter"), + profileCacheTime: cfg.get("Cache", "profileMinutes", 10) + )