38 lines
669 B
Go
38 lines
669 B
Go
package server
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"io"
|
|
"os/exec"
|
|
"runtime"
|
|
)
|
|
|
|
var cmd map[string]string
|
|
var stderr bytes.Buffer
|
|
|
|
// Init an associative array with the os supported
|
|
func init() {
|
|
cmd = map[string]string{
|
|
"windows": "start",
|
|
"darwin": "open",
|
|
"linux": "xdg-open",
|
|
}
|
|
}
|
|
|
|
// Open a url in the default browser
|
|
func (s *Server) OpenURL(url string) (io.Writer, error) {
|
|
if s.Open {
|
|
open, err := cmd[runtime.GOOS]
|
|
if !err {
|
|
return nil, fmt.Errorf("operating system %q is not supported", runtime.GOOS)
|
|
}
|
|
cmd := exec.Command(open, url)
|
|
cmd.Stderr = &stderr
|
|
if err := cmd.Run(); err != nil {
|
|
return cmd.Stderr, err
|
|
}
|
|
}
|
|
return nil, nil
|
|
}
|