diff options
Diffstat (limited to 'repolist.go')
| -rw-r--r-- | repolist.go | 259 |
1 files changed, 0 insertions, 259 deletions
diff --git a/repolist.go b/repolist.go deleted file mode 100644 index f737a52..0000000 --- a/repolist.go +++ /dev/null @@ -1,259 +0,0 @@ -package main - -import ( - "io/ioutil" - "os" - "os/user" - "path/filepath" - "strings" - - "go.wit.com/gui" - "go.wit.com/lib/gadgets" - "go.wit.com/lib/gui/repostatus" - "go.wit.com/log" -) - -// deprecate -func (r *repo) StringOld() string { - return r.status.String() -} - -/* -func (r *repo) getPath() string { - return r.path -} -*/ - -func RemoveFirstElement(slice []string) (string, []string) { - if len(slice) == 0 { - return "", slice // Return the original slice if it's empty - } - return slice[0], slice[1:] // Return the slice without the first element -} - -// 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 = RemoveFirstElement(parts) - master, parts = RemoveFirstElement(parts) - devel, parts = RemoveFirstElement(parts) - user, parts = RemoveFirstElement(parts) - // path, master, devel, user := strings.Split(line, " ") - return path, master, devel, user -} - -func myrepolist() []string { - homeDir, _ := os.UserHomeDir() - cfgfile := filepath.Join(homeDir, ".config/autotypist") - content, _ := ioutil.ReadFile(cfgfile) - out := string(content) - out = strings.TrimSpace(out) - lines := strings.Split(out, "\n") - return lines -} - -// This creates a window -func repolistWindow() { - me.reposwin = gadgets.NewBasicWindow(me.myGui, "All git repositories in ~/go/src/") - me.reposwin.Make() - - me.reposbox = me.reposwin.Box().NewBox("bw vbox", false) - // me.reposwin.Draw() - me.reposwin.Custom = func() { - log.Warn("GOT HERE: main() gadgets.NewBasicWindow() close") - log.Warn("Should I do something special here?") - } - - repoAllButtons(me.reposbox) - - me.reposgroup = me.reposbox.NewGroup("git repositories (configure in ~/.config/myrepolist)") - me.reposgrid = me.reposgroup.NewGrid("test", 0, 0) - - me.reposgrid.NewLabel("") // path goes here - - me.reposgrid.NewLabel("last tag").SetProgName("last tag") - - me.reposgrid.NewLabel("master version") - me.reposgrid.NewLabel("devel version") - me.reposgrid.NewLabel("user version") - - me.reposgrid.NewLabel("Status") - - me.reposgrid.NewLabel("Current Version").SetProgName("Current Version") - me.reposgrid.NextRow() - - usr, _ := user.Current() - - repos := myrepolist() - 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 - } - newrepo := addRepo(me.reposgrid, path, mbranch, dbranch, ubranch) - if newrepo != nil { - // assume repos from ~/.config/autotypist file might be modified - newrepo.status.Writable() - } - me.reposgrid.NextRow() - } - - 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) - tmp := strings.TrimPrefix(path, me.goSrcPwd.String()) - path = strings.Trim(tmp, "/") - log.Info("addRepo()", i, path) - addRepo(me.reposgrid, path, "master", "devel", usr.Username) - me.reposgrid.NextRow() - } - } -} - -func showApps() { - for _, repo := range me.allrepos { - switch repo.status.RepoType() { - case "binary": - //log.Info("compile here. Show()") - repo.Show() - case "library": - //log.Info("library here. Hide()") - repo.Hide() - default: - log.Info("showApps() unknown. Show()") - repo.Hide() - } - - } -} - -func repoAllButtons(box *gui.Node) { - // reposbox.SetExpand(false) - group1 := box.NewGroup("Run on all repos:") - - hbox := group1.Box() - // hbox.Horizontal() - hbox.Vertical() - - box2 := hbox.Box().Vertical() - box2.NewButton("merge all user to devel", func() { - me.reposwin.Disable() - if !mergeAllUserToDevel() { - return - } - me.reposwin.Enable() - }) - - box2.NewButton("merge all devel to main", func() { - me.reposwin.Disable() - if !mergeAllDevelToMain() { - return - } - me.reposwin.Enable() - }) - - box2.NewButton("merge it all", func() { - me.reposwin.Disable() - if !mergeAllUserToDevel() { - return - } - if !mergeAllDevelToMain() { - return - } - me.reposwin.Enable() - }) - - box2.NewButton("test all builds", func() { - me.reposwin.Disable() - defer me.reposwin.Enable() - showApps() - for _, repo := range me.allrepos { - if repo.Hidden() { - // log.Info("skip hidden", repo.String()) - } else { - log.Info("try to build", repo.String()) - if repo.status.Build() { - log.Info("build worked", repo.String()) - } else { - log.Info("build failed", repo.String()) - go repo.status.Xterm("bash") - return - } - } - } - log.Info("") - log.Info("every build worked !!!") - log.Info("") - }) -} - -func mergeAllDevelToMain() bool { - log.Info("merge all here") - for _, repo := range me.allrepos { - if repo.status.ReadOnly() { - log.Info("skipping readonly", repo.String(), repo.dirtyLabel.String()) - continue - } - if repo.dirtyLabel.String() != "merge to main" { - log.Info("skipping. not merge to main", repo.String(), repo.dirtyLabel.String()) - continue - } - if repo.status.CheckDirty() { - log.Info("skipping dirty", repo.String(), repo.dirtyLabel.String()) - continue - } - log.Info("found", repo.String(), repo.dirtyLabel.String()) - repo.newScan() - if repo.status.MergeDevelToMaster() { - log.Warn("THINGS SEEM OK fullAutomation() returned true.") - } else { - log.Warn("last repo:", repo.status.Path()) - log.Warn("THINGS FAILED fullAutomation() returned false") - return false - } - repo.newScan() - } - log.Warn("EVERYTHING WORKED") - return true -} - -func mergeAllUserToDevel() bool { - log.Info("merge all here") - for _, repo := range me.allrepos { - if repo.status.ReadOnly() { - log.Info("skipping readonly", repo.String(), repo.dirtyLabel.String()) - continue - } - if repo.dirtyLabel.String() != "merge to devel" { - log.Info("skipping. not merge to devel", repo.String(), repo.dirtyLabel.String()) - continue - } - if repo.status.CheckDirty() { - log.Info("skipping dirty", repo.String(), repo.dirtyLabel.String()) - continue - } - log.Info("found", repo.String(), repo.dirtyLabel.String()) - repo.newScan() - if repo.status.MergeUserToDevel() { - log.Warn("THINGS SEEM OK fullAutomation() returned true.") - } else { - log.Warn("last repo:", repo.status.Path()) - log.Warn("THINGS FAILED fullAutomation() returned false") - return false - } - repo.newScan() - } - log.Warn("EVERYTHING WORKED") - return true -} |
