Fix default config values.
authorSebastien Douheret <sebastien.douheret@iot.bzh>
Mon, 18 Sep 2017 16:44:52 +0000 (18:44 +0200)
committerSebastien Douheret <sebastien.douheret@iot.bzh>
Mon, 18 Sep 2017 16:50:59 +0000 (18:50 +0200)
Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
README.md
lib/xdsconfig/config.go
lib/xdsconfig/fileconfig.go

index 77ef6e3..aadaf4c 100644 (file)
--- a/README.md
+++ b/README.md
@@ -79,7 +79,7 @@ The tarball mentioned in previous section includes this file with default settin
 Here is the logic to determine which `agent-config.json` file will be used:
 
 1. from command line option: `--config myConfig.json`
-1. `$HOME/.xds/agent-config.json` file
+1. `$HOME/.xds/agent/agent-config.json` file
 1. `<current dir>/agent-config.json` file
 1. `<xds-agent executable dir>/agent-config.json` file
 
@@ -101,7 +101,7 @@ below corresponds to the default values):
     "xds-apikey": "1234abcezam",
     "syncthing": {
         "binDir": ".",
-        "home": "${HOME}/.xds/syncthing-config",
+        "home": "${HOME}/.xds/agent/syncthing-config",
         "gui-address": "http://localhost:8384",
         "gui-apikey": "1234abcezam",
     }
index 7d762c7..854d383 100644 (file)
@@ -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
index 1ad2ea3..2358a31 100644 (file)
@@ -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