summaryrefslogtreecommitdiff
path: root/config/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'config/config.go')
-rw-r--r--config/config.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/config/config.go b/config/config.go
new file mode 100644
index 0000000..074c24c
--- /dev/null
+++ b/config/config.go
@@ -0,0 +1,49 @@
+package config
+
+import (
+ "encoding/json"
+ "os"
+ "path"
+)
+
+type Config struct {
+ ContentRoot string
+ DbDsn string
+ TemplatePath string
+ StaticPath string `json:",omitempty"`
+ HttpLaddr string
+ Secret string
+ UpdateUrl string
+}
+
+func loadConfig(configPath string) (*Config, error) {
+ f, err := os.Open(configPath)
+ if err != nil {
+ return nil, err
+ }
+ defer f.Close()
+
+ var conf Config
+
+ dec := json.NewDecoder(f)
+ if err = dec.Decode(&conf); err != nil {
+ return nil, err
+ }
+
+ return &conf, nil
+}
+
+func LoadConfig(configPath string) (*Config, error) {
+ if configPath == "" {
+ configDir, err := os.UserConfigDir()
+ if err != nil {
+ return nil, err
+ }
+
+ configPath = path.Join(configDir, "laria.me", "config.json")
+
+ return loadConfig(configPath)
+ }
+
+ return loadConfig(configPath)
+}