From 1c6af6236743aa0963d4919b5ef42627efa6aca7 Mon Sep 17 00:00:00 2001
From: Sebastien Douheret <sebastien.douheret@iot.bzh>
Date: Mon, 18 Sep 2017 18:44:52 +0200
Subject: Fix default config values.

Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
---
 lib/xdsconfig/config.go     | 11 ++++++++---
 lib/xdsconfig/fileconfig.go | 30 +++++++++++++++---------------
 2 files changed, 23 insertions(+), 18 deletions(-)

(limited to 'lib/xdsconfig')

diff --git a/lib/xdsconfig/config.go b/lib/xdsconfig/config.go
index 7d762c7..854d383 100644
--- a/lib/xdsconfig/config.go
+++ b/lib/xdsconfig/config.go
@@ -25,7 +25,6 @@ type Config struct {
 // Config default values
 const (
 	DefaultAPIVersion = "1"
-	DefaultPort       = "8010"
 	DefaultLogLevel   = "error"
 )
 
@@ -39,8 +38,14 @@ func Init(ctx *cli.Context, log *logrus.Logger) (*Config, error) {
 		APIVersion:    DefaultAPIVersion,
 		VersionGitTag: ctx.App.Metadata["git-tag"].(string),
 
-		HTTPPort: DefaultPort,
-		Log:      log,
+		HTTPPort: "8010",
+		FileConf: &FileConfig{
+			LogsDir: "/tmp/logs",
+			SThgConf: &SyncThingConf{
+				Home: "${HOME}/.xds/agent/syncthing-config",
+			},
+		},
+		Log: log,
 	}
 
 	// config file settings overwrite default config
diff --git a/lib/xdsconfig/fileconfig.go b/lib/xdsconfig/fileconfig.go
index 1ad2ea3..2358a31 100644
--- a/lib/xdsconfig/fileconfig.go
+++ b/lib/xdsconfig/fileconfig.go
@@ -27,7 +27,7 @@ type FileConfig struct {
 // getConfigFromFile reads configuration from a config file.
 // Order to determine which config file is used:
 //  1/ from command line option: "--config myConfig.json"
-//  2/ $HOME/.xds/agent-config.json file
+//  2/ $HOME/.xds/agent/agent-config.json file
 //  3/ <current_dir>/agent-config.json file
 //  4/ <executable dir>/agent-config.json file
 
@@ -38,7 +38,7 @@ func updateConfigFromFile(c *Config, confFile string) (*FileConfig, error) {
 		searchIn = append(searchIn, confFile)
 	}
 	if usr, err := user.Current(); err == nil {
-		searchIn = append(searchIn, path.Join(usr.HomeDir, ".xds", "agent-config.json"))
+		searchIn = append(searchIn, path.Join(usr.HomeDir, ".xds", "agent", "agent-config.json"))
 	}
 	cwd, err := os.Getwd()
 	if err == nil {
@@ -56,22 +56,22 @@ func updateConfigFromFile(c *Config, confFile string) (*FileConfig, error) {
 			break
 		}
 	}
-	fCfg := FileConfig{}
-	if cFile == nil {
-		// No config file found
-		return &fCfg, nil
-	}
+	// Use default settings
+	fCfg := *c.FileConf
 
-	c.Log.Infof("Use config file: %s", *cFile)
+	// Read config file when existing
+	if cFile != nil {
+		c.Log.Infof("Use config file: %s", *cFile)
 
-	// TODO move on viper package to support comments in JSON and also
-	// bind with flags (command line options)
-	// see https://github.com/spf13/viper#working-with-flags
+		// TODO move on viper package to support comments in JSON and also
+		// bind with flags (command line options)
+		// see https://github.com/spf13/viper#working-with-flags
 
-	fd, _ := os.Open(*cFile)
-	defer fd.Close()
-	if err := json.NewDecoder(fd).Decode(&fCfg); err != nil {
-		return nil, err
+		fd, _ := os.Open(*cFile)
+		defer fd.Close()
+		if err := json.NewDecoder(fd).Decode(&fCfg); err != nil {
+			return nil, err
+		}
 	}
 
 	// Support environment variables (IOW ${MY_ENV_VAR} syntax) in agent-config.json
-- 
cgit