Avoid duplicate SDK install dir - SPEC-1252
[src/xds/xds-server.git] / lib / xdsconfig / config.go
index 2f1fa96..ee20bd2 100644 (file)
@@ -1,3 +1,20 @@
+/*
+ * Copyright (C) 2017-2018 "IoT.bzh"
+ * Author Sebastien Douheret <sebastien@iot.bzh>
+ *
+ * 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 (
@@ -6,19 +23,16 @@ import (
        "os"
        "path/filepath"
 
+       common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/golib"
+       "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xsapiv1"
        "github.com/Sirupsen/logrus"
        "github.com/codegangsta/cli"
-       common "github.com/iotbzh/xds-common/golib"
 )
 
 // Config parameters (json format) of /config command
 type Config struct {
-       ServerUID        string          `json:"id"`
-       Version          string          `json:"version"`
-       APIVersion       string          `json:"apiVersion"`
-       VersionGitTag    string          `json:"gitTag"`
-       SupportedSharing map[string]bool `json:"supportedSharing"`
-       Builder          BuilderConfig   `json:"builder"`
+       // Public APIConfig fields
+       xsapiv1.APIConfig
 
        // Private (un-exported fields in REST GET /config route)
        Options       Options        `json:"-"`
@@ -37,11 +51,12 @@ 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      = "${HOME}/.xds/server/projects"
+       DefaultSTHomeDir     = "${HOME}/.xds/server/syncthing-config"
+       DefaultSdkScriptsDir = "${EXEPATH}/sdks"
+       DefaultSdkDbUpdate   = "startup"
 )
 
 // Init loads the configuration on start-up
@@ -57,6 +72,7 @@ func Init(cliCtx *cli.Context, log *logrus.Logger) (*Config, error) {
                dfltSTHomeDir = resDir
        }
 
+       // Retrieve Server ID (or create one the first time)
        uuid, err := ServerIDGet()
        if err != nil {
                return nil, err
@@ -64,12 +80,14 @@ func Init(cliCtx *cli.Context, log *logrus.Logger) (*Config, error) {
 
        // Define default configuration
        c := Config{
-               ServerUID:        uuid,
-               Version:          cliCtx.App.Metadata["version"].(string),
-               APIVersion:       DefaultAPIVersion,
-               VersionGitTag:    cliCtx.App.Metadata["git-tag"].(string),
-               Builder:          BuilderConfig{},
-               SupportedSharing: map[string]bool{ /*FIXME USE folder.TypePathMap*/ "PathMap": true},
+               APIConfig: xsapiv1.APIConfig{
+                       ServerUID:        uuid,
+                       Version:          cliCtx.App.Metadata["version"].(string),
+                       APIVersion:       DefaultAPIVersion,
+                       VersionGitTag:    cliCtx.App.Metadata["git-tag"].(string),
+                       Builder:          xsapiv1.BuilderConfig{},
+                       SupportedSharing: map[string]bool{xsapiv1.TypePathMap: true},
+               },
 
                Options: Options{
                        ConfigFile:     cliCtx.GlobalString("config"),
@@ -78,16 +96,19 @@ 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:     "webapp/dist",
+                       ShareRootDir:  dfltShareDir,
+                       SdkScriptsDir: DefaultSdkScriptsDir,
+                       SdkDbUpdate:   DefaultSdkDbUpdate,
+                       HTTPPort:      DefaultPort,
+                       SThgConf:      &SyncThingConf{Home: dfltSTHomeDir},
+                       LogsDir:       "",
                },
                Log: log,
        }
 
+       c.Log.Infoln("Server UUID:          ", uuid)
+
        // config file settings overwrite default config
        err = readGlobalConfig(&c, c.Options.ConfigFile)
        if err != nil {
@@ -130,8 +151,9 @@ func Init(cliCtx *cli.Context, log *logrus.Logger) (*Config, error) {
                        return nil, fmt.Errorf("Cannot create logs dir: %v", err)
                }
        }
-       c.Log.Infoln("Logs file:      ", c.Options.LogFile)
-       c.Log.Infoln("Logs directory: ", c.FileConf.LogsDir)
+
+       c.Log.Infoln("Logs file:            ", c.Options.LogFile)
+       c.Log.Infoln("Logs directory:       ", c.FileConf.LogsDir)
 
        return &c, nil
 }