AUTH-2077: Quotes open browser command in windows

This commit is contained in:
Michael Borkenstein 2019-09-23 15:19:54 -05:00
parent 1d5cc45ac7
commit 133e6fdc88
5 changed files with 52 additions and 15 deletions

View File

@ -0,0 +1,11 @@
//+build darwin
package shell
import (
"os/exec"
)
func getBrowserCmd(url string) *exec.Cmd {
return exec.Command("open", url)
}

View File

@ -0,0 +1,11 @@
//+build !windows,!darwin,!linux,!netbsd,!freebsd,!openbsd
package shell
import (
"os/exec"
)
func getBrowserCmd(url string) *exec.Cmd {
return nil
}

View File

@ -0,0 +1,11 @@
//+build linux freebsd openbsd netbsd
package shell
import (
"os/exec"
)
func getBrowserCmd(url string) *exec.Cmd {
return exec.Command("xdg-open", url)
}

View File

@ -0,0 +1,18 @@
//+build windows
package shell
import (
"fmt"
"os/exec"
"syscall"
)
func getBrowserCmd(url string) *exec.Cmd {
cmd := exec.Command("cmd")
// CmdLine is only defined when compiling for windows.
// Empty string is the cmd proc "Title". Needs to be included because the start command will interpret the first
// quoted string as that field and we want to quote the URL.
cmd.SysProcAttr = &syscall.SysProcAttr{CmdLine: fmt.Sprintf(`/c start "" "%s"`, url)}
return cmd
}

View File

@ -4,25 +4,11 @@ import (
"io" "io"
"os" "os"
"os/exec" "os/exec"
"runtime"
) )
// OpenBrowser opens the specified URL in the default browser of the user // OpenBrowser opens the specified URL in the default browser of the user
func OpenBrowser(url string) error { func OpenBrowser(url string) error {
var cmd string return getBrowserCmd(url).Start()
var args []string
switch runtime.GOOS {
case "windows":
cmd = "cmd"
args = []string{"/c", "start"}
case "darwin":
cmd = "open"
default: // "linux", "freebsd", "openbsd", "netbsd"
cmd = "xdg-open"
}
args = append(args, url)
return exec.Command(cmd, args...).Start()
} }
// Run will kick off a shell task and pipe the results to the respective std pipes // Run will kick off a shell task and pipe the results to the respective std pipes