28 lines
552 B
Go
28 lines
552 B
Go
|
|
package browser
|
||
|
|
|
||
|
|
import (
|
||
|
|
"fmt"
|
||
|
|
"os/exec"
|
||
|
|
"runtime"
|
||
|
|
)
|
||
|
|
|
||
|
|
// Open opens the given URL in the user's default browser.
|
||
|
|
func Open(url string) error {
|
||
|
|
var cmd *exec.Cmd
|
||
|
|
|
||
|
|
switch runtime.GOOS {
|
||
|
|
case "linux":
|
||
|
|
cmd = exec.Command("xdg-open", url)
|
||
|
|
case "darwin":
|
||
|
|
cmd = exec.Command("open", url)
|
||
|
|
default:
|
||
|
|
return fmt.Errorf("unsupported platform %s; open this URL manually:\n %s", runtime.GOOS, url)
|
||
|
|
}
|
||
|
|
|
||
|
|
if err := cmd.Start(); err != nil {
|
||
|
|
return fmt.Errorf("failed to open browser: %w\n Open this URL manually:\n %s", err, url)
|
||
|
|
}
|
||
|
|
|
||
|
|
return nil
|
||
|
|
}
|