X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=lib%2Fxdsconfig%2Fconfig.go;h=ad3346a8a29b253396f39061971b4c32a95bda8e;hb=5dc2ff003106f0ced38caadb06033f24c792f9b9;hp=0201d4054e5dcf544864d205553dd81fb77522c7;hpb=2f7828d01f4c4ca2909f95f098627cd5475ed225;p=src%2Fxds%2Fxds-server.git diff --git a/lib/xdsconfig/config.go b/lib/xdsconfig/config.go index 0201d40..ad3346a 100644 --- a/lib/xdsconfig/config.go +++ b/lib/xdsconfig/config.go @@ -1,15 +1,34 @@ +/* + * Copyright (C) 2017-2018 "IoT.bzh" + * Author Sebastien Douheret + * + * 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 ( "fmt" "io" "os" + "os/user" + "path" "path/filepath" + common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git" + "gerrit.automotivelinux.org/gerrit/src/xds/xds-server.git/lib/xsapiv1" "github.com/Sirupsen/logrus" "github.com/codegangsta/cli" - common "github.com/iotbzh/xds-common/golib" - "github.com/iotbzh/xds-server/lib/xsapiv1" ) // Config parameters (json format) of /config command @@ -34,26 +53,30 @@ type Options struct { // Config default values const ( - DefaultAPIVersion = "1" - DefaultPort = "8000" - DefaultShareDir = "${HOME}/.xds-server/projects" - DefaultSTHomeDir = "${HOME}/.xds-server/syncthing-config" - DefaultSdkRootDir = "/xdt/sdk" + DefaultAPIVersion = "1" + DefaultPort = "8000" + DefaultShareDir = "projects" + DefaultSTHomeDir = "syncthing-config" + DefaultSdkScriptsDir = "${EXEPATH}/sdks" + DefaultXdsUtilsScriptsDir = "${EXEPATH}/xds-utils" + DefaultSdkDbUpdate = "startup" + DefaultXdsSrvUpdateTime = "24h" ) // Init loads the configuration on start-up func Init(cliCtx *cli.Context, log *logrus.Logger) (*Config, error) { var err error - dfltShareDir := DefaultShareDir - dfltSTHomeDir := DefaultSTHomeDir - if resDir, err := common.ResolveEnvVar(DefaultShareDir); err == nil { + dfltShareDir := path.Join(ConfigRootDir(), DefaultShareDir) + dfltSTHomeDir := path.Join(ConfigRootDir(), DefaultSTHomeDir) + if resDir, err := common.ResolveEnvVar(dfltShareDir); err == nil { dfltShareDir = resDir } - if resDir, err := common.ResolveEnvVar(DefaultSTHomeDir); err == nil { + if resDir, err := common.ResolveEnvVar(dfltSTHomeDir); err == nil { dfltSTHomeDir = resDir } + // Retrieve Server ID (or create one the first time) uuid, err := ServerIDGet() if err != nil { return nil, err @@ -67,7 +90,7 @@ func Init(cliCtx *cli.Context, log *logrus.Logger) (*Config, error) { APIVersion: DefaultAPIVersion, VersionGitTag: cliCtx.App.Metadata["git-tag"].(string), Builder: xsapiv1.BuilderConfig{}, - SupportedSharing: map[string]bool{ /*FIXME USE folder.TypePathMap*/ "PathMap": true}, + SupportedSharing: map[string]bool{xsapiv1.TypePathMap: true}, }, Options: Options{ @@ -77,12 +100,15 @@ func Init(cliCtx *cli.Context, log *logrus.Logger) (*Config, error) { NoFolderConfig: cliCtx.GlobalBool("no-folderconfig"), }, FileConf: FileConfig{ - WebAppDir: "webapp/dist", - ShareRootDir: dfltShareDir, - SdkRootDir: DefaultSdkRootDir, - HTTPPort: DefaultPort, - SThgConf: &SyncThingConf{Home: dfltSTHomeDir}, - LogsDir: "", + WebAppDir: "www", + ShareRootDir: dfltShareDir, + SdkScriptsDir: DefaultSdkScriptsDir, + XdsUtilsScriptsDir: DefaultXdsUtilsScriptsDir, + SdkDbUpdate: DefaultSdkDbUpdate, + HTTPPort: DefaultPort, + SThgConf: &SyncThingConf{Home: dfltSTHomeDir}, + LogsDir: "", + XdsSrvUpdateTime: DefaultXdsSrvUpdateTime, }, Log: log, } @@ -137,3 +163,34 @@ func Init(cliCtx *cli.Context, log *logrus.Logger) (*Config, error) { return &c, nil } + +// ConfigRootDir return the root directory where xds server save all config files +func ConfigRootDir() string { + root := "$HOME" + if usr, err := user.Current(); err == nil { + root = usr.HomeDir + } + + // Default $HOME/.xds/server but may be changed by an env variable + if envVar, envDef := os.LookupEnv("XDS_SERVER_ROOT_CFG_DIR"); envDef { + root = envVar + } + + return path.Join(root, "/.xds/server") +} + +// WorkspaceRootDir return the path on server side where user xds-workspace dir is accessible +func WorkspaceRootDir() string { + // May be overloaded by an env variable + if envVar, envDef := os.LookupEnv("XDS_SERVER_WORKSPACE_DIR"); envDef { + return envVar + } + + home := "${HOME}" + if usr, err := user.Current(); err == nil { + home = usr.HomeDir + } + + // Default value $HOME/xds-workspace + return path.Join(home, "xds-workspace") +}