Add XDS_SERVER_WORKSPACE_DIR env var support 49/15549/1 5.99.2 flounder/5.99.2 flounder_5.99.2
authorSebastien Douheret <sebastien.douheret@iot.bzh>
Fri, 20 Jul 2018 13:17:21 +0000 (15:17 +0200)
committerSebastien Douheret <sebastien.douheret@iot.bzh>
Fri, 20 Jul 2018 13:17:21 +0000 (15:17 +0200)
By default xds-server uses $HOME/xds-workspace directory to access to
user shared workspace directory. This root directory may be
changed by defining XDS_SERVER_WORKSPACE_DIR environment variable.

Change-Id: Ib786ba9a954b0b093216295d37236a80f78f2f2c
Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
lib/xdsconfig/config.go
lib/xdsserver/sdks.go

index ca5b5cb..4ba97ef 100644 (file)
@@ -174,3 +174,19 @@ func ConfigRootDir() string {
 
        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")
+}
index ee6a269..47d48d5 100644 (file)
@@ -25,6 +25,7 @@ import (
        "sync"
 
        common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/golib"
+       "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xdsconfig"
        "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xsapiv1"
 )
 
@@ -349,7 +350,8 @@ func (s *SDKs) Install(id, filepath string, force bool, timeout int, args []stri
 
        } else if filepath != "" {
                // FIXME support any location and also sharing either by pathmap or Syncthing
-               baseDir := "${HOME}/xds-workspace/sdks"
+
+               baseDir := path.Join(xdsconfig.WorkspaceRootDir(), "sdks")
                sdkFilename, _ = common.ResolveEnvVar(path.Join(baseDir, path.Base(filepath)))
                if !common.Exists(sdkFilename) {
                        return nil, fmt.Errorf("SDK file not accessible, must be in %s", baseDir)