From 75ddecfe3c675855304f8ffa96a7d5dd3b8dae33 Mon Sep 17 00:00:00 2001 From: Sebastien Douheret Date: Fri, 20 Jul 2018 15:17:21 +0200 Subject: [PATCH] Add XDS_SERVER_WORKSPACE_DIR env var support 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 --- lib/xdsconfig/config.go | 16 ++++++++++++++++ lib/xdsserver/sdks.go | 4 +++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/xdsconfig/config.go b/lib/xdsconfig/config.go index ca5b5cb..4ba97ef 100644 --- a/lib/xdsconfig/config.go +++ b/lib/xdsconfig/config.go @@ -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") +} diff --git a/lib/xdsserver/sdks.go b/lib/xdsserver/sdks.go index ee6a269..47d48d5 100644 --- a/lib/xdsserver/sdks.go +++ b/lib/xdsserver/sdks.go @@ -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) -- 2.16.6