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  }