package main // this initializes the repos import ( "io/ioutil" "os" "os/user" "path/filepath" "strings" "go.wit.com/lib/gui/repolist" "go.wit.com/lib/gui/repostatus" "go.wit.com/log" ) func (r *repoWindow) initRepoList() { usr, _ := user.Current() repos := parsecfg("~/.config/autotypist") for _, line := range repos { log.Verbose("repo =", line) path, mbranch, dbranch, ubranch := splitLine(line) if mbranch == "" { mbranch = "master" } if dbranch == "" { dbranch = "devel" } if ubranch == "" { ubranch = usr.Username } r.View.AddRepo(path, mbranch, dbranch, ubranch) } if args.OnlyMe { log.Info("not scanning everything") } else { log.Info("scanning everything in ~/go/src") for i, path := range repostatus.ListGitDirectories() { // log.Info("addRepo()", i, path) path = strings.TrimPrefix(path, me.goSrcPwd.String()) path = strings.Trim(path, "/") log.Info("addRepo()", i, path) r.View.AddRepo(path, "master", "devel", usr.Username) } } } func parsecfg(f string) []string { homeDir, _ := os.UserHomeDir() cfgfile := filepath.Join(homeDir, f) content, _ := ioutil.ReadFile(cfgfile) out := string(content) out = strings.TrimSpace(out) lines := strings.Split(out, "\n") return lines } // returns path, master branch name, devel branch name, user branch name func splitLine(line string) (string, string, string, string) { var path, master, devel, user string parts := strings.Split(line, " ") path, parts = repolist.RemoveFirstElement(parts) master, parts = repolist.RemoveFirstElement(parts) devel, parts = repolist.RemoveFirstElement(parts) user, parts = repolist.RemoveFirstElement(parts) // path, master, devel, user := strings.Split(line, " ") return path, master, devel, user }