package command import ( "github.com/shyiko/jabba/cfg" "os" "path/filepath" "regexp" "runtime" ) func Use(selector string) ([]string, error) { aliasValue := GetAlias(selector) if aliasValue != "" { selector = aliasValue } ver, err := LsBestMatch(selector) if err != nil { return nil, err } return usePath(filepath.Join(cfg.Dir(), "jdk", ver)) } func usePath(path string) ([]string, error) { path, err := filepath.Abs(path) if err != nil { return nil, err } pth, _ := os.LookupEnv("PATH") rgxp := regexp.MustCompile(regexp.QuoteMeta(filepath.Join(cfg.Dir(), "jdk")) + "[^:]+[:]") // strip references to ~/.jabba/jdk/*, otherwise leave unchanged pth = rgxp.ReplaceAllString(pth, "") if runtime.GOOS == "darwin" { path = filepath.Join(path, "Contents", "Home") } systemJavaHome, overrideWasSet := os.LookupEnv("JAVA_HOME_BEFORE_JABBA") if !overrideWasSet { systemJavaHome, _ = os.LookupEnv("JAVA_HOME") } return []string{ "export PATH=\"" + filepath.Join(path, "bin") + string(os.PathListSeparator) + pth + "\"", "export JAVA_HOME=\"" + path + "\"", "export JAVA_HOME_BEFORE_JABBA=\"" + systemJavaHome + "\"", }, nil }