summaryrefslogtreecommitdiffstats
path: root/lib/xdsconfig/fileconfig.go
diff options
context:
space:
mode:
authorSebastien Douheret <sebastien.douheret@iot.bzh>2017-08-26 11:29:56 +0200
committerSebastien Douheret <sebastien.douheret@iot.bzh>2017-08-26 11:29:56 +0200
commit5e120c466686880c5bf6b94043dd01edc261fef9 (patch)
tree9d3071f226bd0b234540bd20bdab0c77d3bca164 /lib/xdsconfig/fileconfig.go
parente113bbc75f88457d29f11823af0ff902e7c2ac8b (diff)
parent0367a6f9f2f868d785f197a052840ec621a681a6 (diff)
Merge remote-tracking branch 'origin/wip'
Diffstat (limited to 'lib/xdsconfig/fileconfig.go')
-rw-r--r--lib/xdsconfig/fileconfig.go40
1 files changed, 30 insertions, 10 deletions
diff --git a/lib/xdsconfig/fileconfig.go b/lib/xdsconfig/fileconfig.go
index 90c1aad..2dbf884 100644
--- a/lib/xdsconfig/fileconfig.go
+++ b/lib/xdsconfig/fileconfig.go
@@ -11,6 +11,16 @@ import (
common "github.com/iotbzh/xds-common/golib"
)
+const (
+ // ConfigDir Directory in user HOME directory where xds config will be saved
+ ConfigDir = ".xds"
+ // GlobalConfigFilename Global config filename
+ GlobalConfigFilename = "config.json"
+ // FoldersConfigFilename Folders config filename
+ FoldersConfigFilename = "server-config_folders.xml"
+)
+
+// SyncThingConf definition
type SyncThingConf struct {
BinDir string `json:"binDir"`
Home string `json:"home"`
@@ -19,6 +29,7 @@ type SyncThingConf struct {
RescanIntervalS int `json:"rescanIntervalS"`
}
+// FileConfig is the JSON structure of xds-server config file (config.json)
type FileConfig struct {
WebAppDir string `json:"webAppDir"`
ShareRootDir string `json:"shareRootDir"`
@@ -28,21 +39,21 @@ type FileConfig struct {
LogsDir string `json:"logsDir"`
}
-// getConfigFromFile reads configuration from a config file.
+// readGlobalConfig 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/config.json file
// 3/ <current_dir>/config.json file
// 4/ <xds-server executable dir>/config.json file
-
-func updateConfigFromFile(c *Config, confFile string) error {
+func readGlobalConfig(c *Config, confFile string) error {
searchIn := make([]string, 0, 3)
if confFile != "" {
searchIn = append(searchIn, confFile)
}
if usr, err := user.Current(); err == nil {
- searchIn = append(searchIn, path.Join(usr.HomeDir, ".xds", "config.json"))
+ searchIn = append(searchIn, path.Join(usr.HomeDir, ConfigDir,
+ GlobalConfigFilename))
}
cwd, err := os.Getwd()
if err == nil {
@@ -70,7 +81,6 @@ func updateConfigFromFile(c *Config, confFile string) error {
// 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()
fCfg := FileConfig{}
@@ -79,14 +89,15 @@ func updateConfigFromFile(c *Config, confFile string) error {
}
// Support environment variables (IOW ${MY_ENV_VAR} syntax) in config.json
- for _, field := range []*string{
+ vars := []*string{
&fCfg.WebAppDir,
&fCfg.ShareRootDir,
&fCfg.SdkRootDir,
- &fCfg.LogsDir,
- &fCfg.SThgConf.Home,
- &fCfg.SThgConf.BinDir} {
-
+ &fCfg.LogsDir}
+ if fCfg.SThgConf != nil {
+ vars = append(vars, &fCfg.SThgConf.Home, &fCfg.SThgConf.BinDir)
+ }
+ for _, field := range vars {
var err error
if *field, err = common.ResolveEnvVar(*field); err != nil {
return err
@@ -123,3 +134,12 @@ func updateConfigFromFile(c *Config, confFile string) error {
c.FileConf = fCfg
return nil
}
+
+// FoldersConfigFilenameGet
+func FoldersConfigFilenameGet() (string, error) {
+ usr, err := user.Current()
+ if err != nil {
+ return "", err
+ }
+ return path.Join(usr.HomeDir, ConfigDir, FoldersConfigFilename), nil
+}