...
1 package xbrowser
2
3 import (
4 "context"
5 "fmt"
6 "os/exec"
7
8 "github.com/pkg/browser"
9
10 "oss.terrastruct.com/util-go/xos"
11 )
12
13 func Open(ctx context.Context, env *xos.Env, url string) error {
14 browserEnv := env.Getenv("BROWSER")
15 if browserEnv == "0" || browserEnv == "false" {
16 return nil
17 }
18 if browserEnv != "" && browserEnv != "1" && browserEnv != "true" {
19 browserSh := fmt.Sprintf(`%s "$1"`, browserEnv)
20 cmd := exec.CommandContext(ctx, "sh", "-sc", browserSh, "--", url)
21 out, err := cmd.CombinedOutput()
22 if err != nil {
23 return fmt.Errorf("failed to run %v (out: %q): %w", cmd.Args, out, err)
24 }
25 return nil
26 }
27 return browser.OpenURL(url)
28 }
29
View as plain text