From da638861fca4bf17e1370aa734d6daf0d7661281 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20=C3=96zbek?= Date: Thu, 25 Apr 2019 17:10:08 +0300 Subject: [PATCH] Update main.go --- main.go | 63 ++++++++++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/main.go b/main.go index c31b93d..2218c42 100644 --- a/main.go +++ b/main.go @@ -133,20 +133,7 @@ chmod +x ` + codeServerPath } if !*skipSyncFlag { - start := time.Now() - flog.Info("syncing settings") - err = syncUserSettings(*sshFlags, host, false) - if err != nil { - flog.Fatal("failed to sync settings: %v", err) - } - flog.Info("synced settings in %s", time.Since(start)) - - flog.Info("syncing extensions") - err = syncExtensions(*sshFlags, host, false) - if err != nil { - flog.Fatal("failed to sync extensions: %v", err) - } - flog.Info("synced extensions in %s", time.Since(start)) + syncConfigurations(sshFlags, host) } flog.Info("starting code-server...") @@ -174,20 +161,7 @@ chmod +x ` + codeServerPath url := "http://127.0.0.1:" + localPort ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) defer cancel() - for { - if ctx.Err() != nil { - flog.Fatal("code-server didn't start in time %v", ctx.Err()) - } - // Waits for code-server to be available before opening the browser. - r, _ := http.NewRequest("GET", url, nil) - r = r.WithContext(ctx) - resp, err := http.DefaultClient.Do(r) - if err != nil { - continue - } - resp.Body.Close() - break - } + waitForCodeServer(ctx, url) ctx, cancel = context.WithCancel(context.Background()) openBrowser(url) @@ -223,6 +197,39 @@ chmod +x ` + codeServerPath } } +func syncConfigurations(sshFlags *string, host string) { + start := time.Now() + flog.Info("syncing settings") + err := syncUserSettings(*sshFlags, host, false) + if err != nil { + flog.Fatal("failed to sync settings: %v", err) + } + flog.Info("synced settings in %s", time.Since(start)) + flog.Info("syncing extensions") + err = syncExtensions(*sshFlags, host, false) + if err != nil { + flog.Fatal("failed to sync extensions: %v", err) + } + flog.Info("synced extensions in %s", time.Since(start)) +} + +func waitForCodeServer(ctx context.Context, url string) { + for { + if ctx.Err() != nil { + flog.Fatal("code-server didn't start in time %v", ctx.Err()) + } + // Waits for code-server to be available before opening the browser. + r, _ := http.NewRequest("GET", url, nil) + r = r.WithContext(ctx) + resp, err := http.DefaultClient.Do(r) + if err != nil { + continue + } + resp.Body.Close() + break + } +} + func openBrowser(url string) { var openCmd *exec.Cmd switch {