mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-03 08:37:37 +00:00
a3a77ab5a8
* open web * Update shared/browser/browser_test.go Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com> * Update shared/browser/browser.go Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com> * add to depz.bazel * run gazelle Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com> Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
58 lines
1.4 KiB
Go
58 lines
1.4 KiB
Go
/**
|
|
Package from the official Github CLI https://github.com/cli/cli/blob/f30bc5bc64f9c3a839e39713adab48790264119c/pkg/browser/browser.go
|
|
All rights reserved to the package authors, respectively. MIT License. See https://github.com/cli/cli/blob/trunk/LICENSE
|
|
*/
|
|
package browser
|
|
|
|
import (
|
|
"os"
|
|
"os/exec"
|
|
"runtime"
|
|
"strings"
|
|
|
|
"github.com/google/shlex"
|
|
)
|
|
|
|
// Command produces an exec.Cmd respecting runtime.GOOS and $BROWSER environment variable
|
|
func Command(url string) (*exec.Cmd, error) {
|
|
launcher := os.Getenv("BROWSER")
|
|
if launcher != "" {
|
|
return FromLauncher(launcher, url)
|
|
}
|
|
return ForOS(runtime.GOOS, url), nil
|
|
}
|
|
|
|
// ForOS produces an exec.Cmd to open the web browser for different OS
|
|
func ForOS(goos, url string) *exec.Cmd {
|
|
exe := "open"
|
|
var args []string
|
|
switch goos {
|
|
case "darwin":
|
|
args = append(args, url)
|
|
case "windows":
|
|
exe = "cmd"
|
|
r := strings.NewReplacer("&", "^&")
|
|
args = append(args, "/c", "start", r.Replace(url))
|
|
default:
|
|
exe = "xdg-open"
|
|
args = append(args, url)
|
|
}
|
|
|
|
cmd := exec.Command(exe, args...)
|
|
cmd.Stderr = os.Stderr
|
|
return cmd
|
|
}
|
|
|
|
// FromLauncher parses the launcher string based on shell splitting rules
|
|
func FromLauncher(launcher, url string) (*exec.Cmd, error) {
|
|
args, err := shlex.Split(launcher)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
args = append(args, url)
|
|
cmd := exec.Command(args[0], args[1:]...)
|
|
cmd.Stderr = os.Stderr
|
|
return cmd, nil
|
|
}
|