X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=lib%2Fxdsconfig%2Fconfig.go;h=4ba97eff23f4681ee13a5569cc0dcecd61181093;hb=3f460335601df39a6b43488313ac9031c8d85fe8;hp=11960c9fe80bd15ad52d0c5ff529aa72de3c77f6;hpb=2a7a112bbffcd41a3436c086f1910ea7a9c94744;p=src%2Fxds%2Fxds-server.git diff --git a/lib/xdsconfig/config.go b/lib/xdsconfig/config.go index 11960c9..4ba97ef 100644 --- a/lib/xdsconfig/config.go +++ b/lib/xdsconfig/config.go @@ -21,6 +21,8 @@ import ( "fmt" "io" "os" + "os/user" + "path" "path/filepath" common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/golib" @@ -53,21 +55,22 @@ type Options struct { const ( DefaultAPIVersion = "1" DefaultPort = "8000" - DefaultShareDir = "${HOME}/.xds/server/projects" - DefaultSTHomeDir = "${HOME}/.xds/server/syncthing-config" + DefaultShareDir = "projects" + DefaultSTHomeDir = "syncthing-config" DefaultSdkScriptsDir = "${EXEPATH}/sdks" + DefaultSdkDbUpdate = "startup" ) // 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 } @@ -85,7 +88,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{ @@ -98,6 +101,7 @@ func Init(cliCtx *cli.Context, log *logrus.Logger) (*Config, error) { WebAppDir: "webapp/dist", ShareRootDir: dfltShareDir, SdkScriptsDir: DefaultSdkScriptsDir, + SdkDbUpdate: DefaultSdkDbUpdate, HTTPPort: DefaultPort, SThgConf: &SyncThingConf{Home: dfltSTHomeDir}, LogsDir: "", @@ -155,3 +159,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") +}