summaryrefslogtreecommitdiff
path: root/initRepoList.go
diff options
context:
space:
mode:
Diffstat (limited to 'initRepoList.go')
-rw-r--r--initRepoList.go70
1 files changed, 70 insertions, 0 deletions
diff --git a/initRepoList.go b/initRepoList.go
new file mode 100644
index 0000000..befe28c
--- /dev/null
+++ b/initRepoList.go
@@ -0,0 +1,70 @@
+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
+}