change openBrowser to use conditional compilation rather than a runtime switch

This commit is contained in:
Justin Overfelt 2019-05-06 18:33:18 -04:00
parent 288e1acf62
commit ee0f2e3e9b
9 changed files with 51 additions and 34 deletions

View File

@ -163,5 +163,8 @@ func HandleAlternateScreen(opt string) {
cmd := exec.Command("tput", opt)
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Run()
err := cmd.Run()
if err != nil {
panic(err)
}
}

View File

@ -63,7 +63,3 @@ func (b Bookmarks) IniDump() string {
}
return out
}
func MakeBookmarks() Bookmarks {
return Bookmarks{[]string{}, []string{}}
}

View File

@ -8,8 +8,6 @@ import (
"fmt"
"io/ioutil"
"net"
"os/exec"
"runtime"
"strings"
"time"
)
@ -90,10 +88,11 @@ func Visit(addr, openhttp string) (View, error) {
if u.Gophertype == "h" {
if res, tf := isWebLink(u.Resource); tf && strings.ToUpper(openhttp) == "TRUE" {
err := openbrowser(res)
err := openBrowser(res)
if err != nil {
return View{}, err
}
return View{}, fmt.Errorf("")
}
}
@ -113,12 +112,12 @@ func Visit(addr, openhttp string) (View, error) {
return MakeView(u, pageContent), nil
}
func GetType(t string) string {
func getType(t string) string {
if val, ok := types[t]; ok {
return val
}
return "???"
return "???"
}
func isWebLink(resource string) (string, bool) {
@ -128,24 +127,3 @@ func isWebLink(resource string) (string, bool) {
}
return "", false
}
func openbrowser(url string) error {
// gist.github.com/hyg/9c4afcd91fe24316cbf0
var err error
switch runtime.GOOS {
case "linux":
err = exec.Command("xdg-open", url).Start()
case "windows":
err = exec.Command("rundll32", "url.dll,FileProtocolHandler", url).Start()
case "darwin":
err = exec.Command("open", url).Start()
default:
err = fmt.Errorf("Unsupported os for browser detection")
}
if err != nil {
return err
}
return nil
}

View File

@ -0,0 +1,9 @@
// +build darwin
package gopher
import "os/exec"
func openBrowser(url string) error {
return exec.Command("open", url).Start()
}

View File

@ -0,0 +1,9 @@
// +build linux
package gopher
import "os/exec"
func openBrowser(url string) error {
return exec.Command("xdg-open", url).Start()
}

View File

@ -0,0 +1,11 @@
// +build !linux
// +build !darwin
// +build !windows
package gopher
import "fmt"
func openBrowser(url string) error {
return fmt.Errorf("Unsupported os for browser detection")
}

View File

@ -0,0 +1,9 @@
// +build windows
package gopher
import "os/exec"
func openBrowser(url string) error {
return exec.Command("rundll32", "url.dll,FileProtocolHandler", url).Start()
}

View File

@ -57,13 +57,15 @@ func MakeUrl(u string) (Url, error) {
}
if out.Host == "" {
return out, errors.New("No host.")
return out, errors.New("no host")
}
if out.Scheme == "gopher" && out.Port == "" {
out.Port = "70"
} else if out.Scheme == "http" || out.Scheme == "https" && out.Port == "" {
} else if out.Scheme == "http" && out.Port == "" {
out.Port = "80"
} else if out.Scheme == "https" && out.Port == "" {
out.Port = "443"
}
if out.Gophertype == "" && (out.Resource == "" || out.Resource == "/") {

View File

@ -52,7 +52,7 @@ func (v *View) ParseMap() {
} else if len(line) >= 4 {
fulllink := fmt.Sprintf("%s:%s/%s%s", line[2], line[3], string(line[0][0]), line[1])
v.Links = append(v.Links, fulllink)
linktext := fmt.Sprintf("(%s) %2d %s", GetType(string(line[0][0])), len(v.Links), title)
linktext := fmt.Sprintf("(%s) %2d %s", getType(string(line[0][0])), len(v.Links), title)
v.Content[i] = linktext
}
}