| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- // Package browser provides helpers to open files, readers, and urls in a browser window.
- //
- // The choice of which browser is started is entirely client dependant.
- package browser
- import (
- "fmt"
- "io"
- "io/ioutil"
- "os"
- "os/exec"
- "path/filepath"
- )
- // Stdout is the io.Writer to which executed commands write standard output.
- var Stdout io.Writer = os.Stdout
- // Stderr is the io.Writer to which executed commands write standard error.
- var Stderr io.Writer = os.Stderr
- // OpenFile opens new browser window for the file path.
- func OpenFile(path string) error {
- path, err := filepath.Abs(path)
- if err != nil {
- return err
- }
- return OpenURL("file://" + path)
- }
- // OpenReader consumes the contents of r and presents the
- // results in a new browser window.
- func OpenReader(r io.Reader) error {
- f, err := ioutil.TempFile("", "browser.*.html")
- if err != nil {
- return fmt.Errorf("browser: could not create temporary file: %v", err)
- }
- if _, err := io.Copy(f, r); err != nil {
- f.Close()
- return fmt.Errorf("browser: caching temporary file failed: %v", err)
- }
- if err := f.Close(); err != nil {
- return fmt.Errorf("browser: caching temporary file failed: %v", err)
- }
- return OpenFile(f.Name())
- }
- // OpenURL opens a new browser window pointing to url.
- func OpenURL(url string) error {
- return openBrowser(url)
- }
- func runCmd(prog string, args ...string) error {
- cmd := exec.Command(prog, args...)
- cmd.Stdout = Stdout
- cmd.Stderr = Stderr
- return cmd.Run()
- }
|