Use go module as dependency tool instead of glide
[src/xds/xds-server.git] / lib / xdsconfig / config.go
index 59cf394..ad3346a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 "IoT.bzh"
+ * Copyright (C) 2017-2018 "IoT.bzh"
  * Author Sebastien Douheret <sebastien@iot.bzh>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,12 +21,14 @@ 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
@@ -51,23 +53,26 @@ 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
        }
 
@@ -85,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{
@@ -95,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,
        }
@@ -155,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")
+}