github.com/pengwynn/gh@v1.0.1-0.20140118055701-14327ca3942e/utils/utils.go (about) 1 package utils 2 3 import ( 4 "errors" 5 "log" 6 "os" 7 "os/exec" 8 "path/filepath" 9 "runtime" 10 "strings" 11 ) 12 13 func Check(err error) { 14 if err != nil { 15 log.Fatalf("fatal: %v\n", err) 16 } 17 } 18 19 func ConcatPaths(paths ...string) string { 20 return strings.Join(paths, "/") 21 } 22 23 func BrowserLauncher() ([]string, error) { 24 browser := os.Getenv("BROWSER") 25 if browser == "" { 26 browser = searchBrowserLauncher(runtime.GOOS) 27 } 28 29 if browser == "" { 30 return nil, errors.New("Please set $BROWSER to a web launcher") 31 } 32 33 return strings.Split(browser, " "), nil 34 } 35 36 func searchBrowserLauncher(goos string) (browser string) { 37 switch goos { 38 case "darwin": 39 browser = "open" 40 case "windows": 41 browser = "cmd /c start" 42 default: 43 candidates := []string{"xdg-open", "cygstart", "x-www-browser", "firefox", 44 "opera", "mozilla", "netscape"} 45 for _, b := range candidates { 46 path, err := exec.LookPath(b) 47 if err == nil { 48 browser = path 49 break 50 } 51 } 52 } 53 54 return browser 55 } 56 57 func DirName() (string, error) { 58 dir, err := os.Getwd() 59 if err != nil { 60 return "", err 61 } 62 63 name := filepath.Base(dir) 64 name = strings.Replace(name, " ", "-", -1) 65 return name, nil 66 } 67 68 func IsOption(confirm, short, long string) bool { 69 return strings.EqualFold(confirm, short) || strings.EqualFold(confirm, long) 70 }