Rework search directories for agent-config.json files.
authorSebastien Douheret <sebastien.douheret@iot.bzh>
Tue, 19 Sep 2017 08:25:55 +0000 (10:25 +0200)
committerSebastien Douheret <sebastien.douheret@iot.bzh>
Tue, 19 Sep 2017 08:25:55 +0000 (10:25 +0200)
Here is the logic to determine which `agent-config.json` file will be used:

1. from command line option: `--config myConfig.json`
2. `$HOME/.xds/agent/agent-config.json` file
3. `/etc/xds-agent/agent-config.json` file
4. `<xds-agent executable dir>/agent-config.json` file

README.md
lib/xdsconfig/fileconfig.go

index aadaf4c..312ffd1 100644 (file)
--- a/README.md
+++ b/README.md
@@ -80,7 +80,7 @@ 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/agent-config.json` file
-1. `<current dir>/agent-config.json` file
+1. `/etc/xds-agent/agent-config.json` file
 1. `<xds-agent executable dir>/agent-config.json` file
 
 Supported fields in configuration file are (all fields are optional and example
index 2358a31..efe94bf 100644 (file)
@@ -40,14 +40,21 @@ func updateConfigFromFile(c *Config, confFile string) (*FileConfig, error) {
        if usr, err := user.Current(); err == nil {
                searchIn = append(searchIn, path.Join(usr.HomeDir, ".xds", "agent", "agent-config.json"))
        }
-       cwd, err := os.Getwd()
-       if err == nil {
-               searchIn = append(searchIn, path.Join(cwd, "agent-config.json"))
-       }
-       exePath, err := filepath.Abs(filepath.Dir(os.Args[0]))
+
+       searchIn = append(searchIn, "/etc/xds-agent/agent-config.json")
+
+       exePath := os.Args[0]
+       ee, _ := os.Executable()
+       exeAbsPath, err := filepath.Abs(ee)
        if err == nil {
-               searchIn = append(searchIn, path.Join(exePath, "agent-config.json"))
+               exePath, err = filepath.EvalSymlinks(exeAbsPath)
+               if err == nil {
+                       exePath = filepath.Dir(ee)
+               } else {
+                       exePath = filepath.Dir(exeAbsPath)
+               }
        }
+       searchIn = append(searchIn, path.Join(exePath, "agent-config.json"))
 
        var cFile *string
        for _, p := range searchIn {