+/*
+ * Copyright (C) 2017-2018 "IoT.bzh"
+ * Author Sebastien Douheret <sebastien@iot.bzh>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package xdsconfig
import (
"path/filepath"
"strings"
- common "github.com/iotbzh/xds-common/golib"
+ common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/golib"
)
+// ConfigDir Directory in user HOME directory where xds config will be saved
+var ConfigDir = path.Join(".xds", "server")
+
const (
- // ConfigDir Directory in user HOME directory where xds config will be saved
- ConfigDir = ".xds-server"
// GlobalConfigFilename Global config filename
- GlobalConfigFilename = "config.json"
+ GlobalConfigFilename = "server-config.json"
+ // ServerDataFilename Server data filename
+ ServerDataFilename = "server-data.xml"
// FoldersConfigFilename Folders config filename
FoldersConfigFilename = "server-config_folders.xml"
)
RescanIntervalS int `json:"rescanIntervalS"`
}
-// FileConfig is the JSON structure of xds-server config file (config.json)
+// FileConfig is the JSON structure of xds-server config file (server-config.json)
type FileConfig struct {
- WebAppDir string `json:"webAppDir"`
- ShareRootDir string `json:"shareRootDir"`
- SdkRootDir string `json:"sdkRootDir"`
- HTTPPort string `json:"httpPort"`
- SThgConf *SyncThingConf `json:"syncthing"`
- LogsDir string `json:"logsDir"`
+ WebAppDir string `json:"webAppDir"`
+ ShareRootDir string `json:"shareRootDir"`
+ SdkScriptsDir string `json:"sdkScriptsDir"`
+ HTTPPort string `json:"httpPort"`
+ SThgConf *SyncThingConf `json:"syncthing"`
+ LogsDir string `json:"logsDir"`
}
// 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-server/config.json file
-// 3/ /etc/xds-server/config.json file
-// 4/ <xds-server executable dir>/config.json file
+// 2/ $HOME/.xds/server/server-config.json file
+// 3/ /etc/xds/server/server-config.json file
+// 4/ <xds-server executable dir>/server-config.json file
func readGlobalConfig(c *Config, confFile string) error {
searchIn := make([]string, 0, 3)
searchIn = append(searchIn, confFile)
}
if usr, err := user.Current(); err == nil {
- searchIn = append(searchIn, path.Join(usr.HomeDir, ConfigDir,
- GlobalConfigFilename))
+ searchIn = append(searchIn, path.Join(usr.HomeDir, ConfigDir, GlobalConfigFilename))
}
- searchIn = append(searchIn, "/etc/xds-server/config.json")
+ searchIn = append(searchIn, "/etc/xds/server/server-config.json")
exePath := os.Args[0]
- exeAbsPath, err := filepath.Abs(os.Args[0])
+ ee, _ := os.Executable()
+ exeAbsPath, err := filepath.Abs(ee)
if err == nil {
exePath, err = filepath.EvalSymlinks(exeAbsPath)
if err == nil {
- exePath = filepath.Dir(exePath)
+ exePath = filepath.Dir(ee)
} else {
exePath = filepath.Dir(exeAbsPath)
}
}
- searchIn = append(searchIn, path.Join(exePath, "config.json"))
+ searchIn = append(searchIn, path.Join(exePath, "server-config.json"))
var cFile *string
for _, p := range searchIn {
// No config file found
return nil
}
- c.Log.Infof("Use config file: %s", *cFile)
+ 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)
return err
}
- // Support environment variables (IOW ${MY_ENV_VAR} syntax) in config.json
+ // Support environment variables (IOW ${MY_ENV_VAR} syntax) in server-config.json
vars := []*string{
&fCfg.WebAppDir,
&fCfg.ShareRootDir,
- &fCfg.SdkRootDir,
+ &fCfg.SdkScriptsDir,
&fCfg.LogsDir}
if fCfg.SThgConf != nil {
vars = append(vars, &fCfg.SThgConf.Home, &fCfg.SThgConf.BinDir)
if fCfg.ShareRootDir == "" {
fCfg.ShareRootDir = c.FileConf.ShareRootDir
}
- if fCfg.SdkRootDir == "" {
- fCfg.SdkRootDir = c.FileConf.SdkRootDir
+ if fCfg.SdkScriptsDir == "" {
+ fCfg.SdkScriptsDir = c.FileConf.SdkScriptsDir
}
if fCfg.HTTPPort == "" {
fCfg.HTTPPort = c.FileConf.HTTPPort
return nil
}
-// FoldersConfigFilenameGet
-func FoldersConfigFilenameGet() (string, error) {
+func configFilenameGet(cfgFile string) (string, error) {
usr, err := user.Current()
if err != nil {
return "", err
}
- return path.Join(usr.HomeDir, ConfigDir, FoldersConfigFilename), nil
+ return path.Join(usr.HomeDir, ConfigDir, cfgFile), nil
+}
+
+// FoldersConfigFilenameGet Return the FoldersConfig filename
+func FoldersConfigFilenameGet() (string, error) {
+ return configFilenameGet(FoldersConfigFilename)
+}
+
+// ServerDataFilenameGet Return the ServerData filename
+func ServerDataFilenameGet() (string, error) {
+ return configFilenameGet(ServerDataFilename)
}