Minor fixes in sdks command output.
[src/xds/xds-cli.git] / main.go
diff --git a/main.go b/main.go
index 0908140..2d0c179 100644 (file)
--- a/main.go
+++ b/main.go
@@ -75,14 +75,28 @@ var IOsk *socketio_client.Client
 
 // exitError exists this program with the specified error
 func exitError(code int, f string, a ...interface{}) {
+       earlyDisplay()
        err := fmt.Sprintf(f, a...)
        fmt.Fprintf(os.Stderr, err+"\n")
        os.Exit(code)
 }
 
+// earlyDebug Used to log info before logger has been initialized
+var earlyDebug []string
+
+func earlyPrintf(format string, args ...interface{}) {
+       earlyDebug = append(earlyDebug, fmt.Sprintf(format, args...))
+}
+
+func earlyDisplay() {
+       for _, str := range earlyDebug {
+               Log.Infof("%s", str)
+       }
+       earlyDebug = []string{}
+}
+
 // main
 func main() {
-       var earlyDebug []string
 
        // Allow to set app name from cli (useful for debugging)
        if AppName == "" {
@@ -217,12 +231,17 @@ func main() {
 
        // Load config file if requested
        if confFile != "" {
-               earlyDebug = append(earlyDebug, fmt.Sprintf("confFile detected: %v", confFile))
+               earlyPrintf("confFile detected: %v", confFile)
+               confFile, err := common.ResolveEnvVar(confFile)
+               if err != nil {
+                       exitError(1, "Error while resolving confFile: %v", err)
+               }
+               earlyPrintf("Resolved confFile: %v", confFile)
                if !common.Exists(confFile) {
                        exitError(1, "Error env config file not found")
                }
                // Load config file variables that will overwrite env variables
-               err := godotenv.Overload(confFile)
+               err = godotenv.Overload(confFile)
                if err != nil {
                        exitError(1, "Error loading env config file "+confFile)
                }
@@ -232,7 +251,7 @@ func main() {
                if err != nil {
                        exitError(1, "Error reading env config file "+confFile)
                }
-               earlyDebug = append(earlyDebug, fmt.Sprintf("EnvConfFileMap: %v", EnvConfFileMap))
+               earlyPrintf("EnvConfFileMap: %v", EnvConfFileMap)
        }
 
        app.Before = func(ctx *cli.Context) error {
@@ -258,9 +277,7 @@ func main() {
                Log.Formatter = &logrus.TextFormatter{}
 
                Log.Infof("%s version: %s", AppName, app.Version)
-               for _, str := range earlyDebug {
-                       Log.Infof("%s", str)
-               }
+               earlyDisplay()
                Log.Debugf("\nEnvironment: %v\n", os.Environ())
 
                if err = XdsConnInit(ctx); err != nil {
@@ -303,6 +320,11 @@ func XdsConnInit(ctx *cli.Context) error {
                serverURL = "http://" + serverURL
        }
 
+       lvl := common.HTTPLogLevelWarning
+       if Log.Level == logrus.DebugLevel {
+               lvl = common.HTTPLogLevelDebug
+       }
+
        // Create HTTP client
        Log.Debugln("Connect HTTP client on ", agentURL)
        conf := common.HTTPClientConfig{
@@ -311,15 +333,22 @@ func XdsConnInit(ctx *cli.Context) error {
                CsrfDisable:         true,
                LogOut:              Log.Out,
                LogPrefix:           "XDSAGENT: ",
-               LogLevel:            common.HTTPLogLevelWarning,
+               LogLevel:            lvl,
        }
 
        HTTPCli, err = common.HTTPNewClient(agentURL, conf)
        if err != nil {
                errmsg := err.Error()
-               if m, err := regexp.MatchString("Get http.?://", errmsg); m && err == nil {
+               m, err := regexp.MatchString("Get http.?://", errmsg)
+               if (m && err == nil) || strings.Contains(errmsg, "Failed to get device ID") {
                        i := strings.LastIndex(errmsg, ":")
-                       errmsg = "Cannot connection to " + agentURL + errmsg[i:]
+                       newErr := "Cannot connection to " + agentURL
+                       if i > 0 {
+                               newErr += " (" + strings.TrimSpace(errmsg[i+1:]) + ")"
+                       } else {
+                               newErr += " (" + strings.TrimSpace(errmsg) + ")"
+                       }
+                       errmsg = newErr
                }
                return cli.NewExitError(errmsg, 1)
        }
@@ -361,6 +390,7 @@ func XdsConnInit(ctx *cli.Context) error {
        }
        svrCfg := xdsConf.Servers[XdsServerIndexGet()]
        if (serverURL != "" && svrCfg.URL != serverURL) || !svrCfg.Connected {
+               Log.Infof("Update XDS Server config: serverURL=%v, svrCfg=%v", serverURL, svrCfg)
                if serverURL != "" {
                        svrCfg.URL = serverURL
                }