Просмотр исходного кода

Added function to check if the linux environment is under wsl

jnfrati 4 лет назад
Родитель
Сommit
68f2e480d7
1 измененных файлов с 18 добавлено и 1 удалено
  1. 18 1
      cli/cmd/utils/browser.go

+ 18 - 1
cli/cmd/utils/browser.go

@@ -2,9 +2,22 @@ package utils
 
 import (
 	"os/exec"
+	"regexp"
 	"runtime"
 )
 
+func checkIfWsl() bool {
+	out, err := exec.Command("uname", "-a").Output()
+	if err != nil {
+		return false
+	}
+	// On some cases, uname on wsl outputs microsoft capitalized
+	if matched, err := regexp.Match(`microsoft|Microsoft`, out); err != nil {
+		return matched
+	}
+	return false
+}
+
 // OpenBrowser opens the specified URL in the default browser of the user.
 func OpenBrowser(url string) error {
 	var cmd string
@@ -17,7 +30,11 @@ func OpenBrowser(url string) error {
 	case "darwin":
 		cmd = "open"
 	default: // "linux", "freebsd", "openbsd", "netbsd"
-		cmd = "xdg-open"
+		if checkIfWsl() {
+			cmd = "explorer.exe"
+		} else {
+			cmd = "xdg-open"
+		}
 	}
 	args = append(args, url)
 	return exec.Command(cmd, args...).Start()