31 lines
		
	
	
		
			569 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			569 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package utils
 | 
						|
 | 
						|
import (
 | 
						|
	"os"
 | 
						|
	"path/filepath"
 | 
						|
	"runtime"
 | 
						|
	"strings"
 | 
						|
)
 | 
						|
 | 
						|
// GetGOPATHs returns all paths in GOPATH variable.
 | 
						|
func GetGOPATHs() []string {
 | 
						|
	gopath := os.Getenv("GOPATH")
 | 
						|
	if gopath == "" && strings.Compare(runtime.Version(), "go1.8") >= 0 {
 | 
						|
		gopath = defaultGOPATH()
 | 
						|
	}
 | 
						|
	return filepath.SplitList(gopath)
 | 
						|
}
 | 
						|
 | 
						|
func defaultGOPATH() string {
 | 
						|
	env := "HOME"
 | 
						|
	if runtime.GOOS == "windows" {
 | 
						|
		env = "USERPROFILE"
 | 
						|
	} else if runtime.GOOS == "plan9" {
 | 
						|
		env = "home"
 | 
						|
	}
 | 
						|
	if home := os.Getenv(env); home != "" {
 | 
						|
		return filepath.Join(home, "go")
 | 
						|
	}
 | 
						|
	return ""
 | 
						|
}
 |