cleaning up repostatus code

This commit is contained in:
Jeff Carr 2024-02-16 11:39:44 -06:00
parent e323b15eb7
commit bdb7617143
5 changed files with 178 additions and 153 deletions

146
addRepo.go Normal file
View File

@ -0,0 +1,146 @@
package main
import (
"strings"
"go.wit.com/gui"
"go.wit.com/lib/gui/repostatus"
"go.wit.com/log"
)
func (r *repo) Hide() {
r.pLabel.Hide()
r.lastTag.Hide()
r.vLabel.Hide()
r.masterVersion.Hide()
r.develVersion.Hide()
r.userVersion.Hide()
r.dirtyLabel.Hide()
r.endBox.Hide()
// r.statusButton.Hide()
// r.diffButton.Hide()
r.hidden = true
}
func (r *repo) Hidden() bool {
return r.hidden
}
func (r *repo) Show() {
r.pLabel.Show()
r.lastTag.Show()
r.vLabel.Show()
r.masterVersion.Show()
r.develVersion.Show()
r.userVersion.Show()
r.dirtyLabel.Show()
r.endBox.Show()
// r.statusButton.Show()
// r.diffButton.Show()
r.hidden = false
}
func addRepo(grid *gui.Node, path string, master string, devel string, user string) *repo {
_, ok := me.allrepos[path]
if ok {
log.Info("addRepo() already had path", path)
return nil
}
// log.Info("addRepo() attempting to add path", path)
rstatus := repostatus.NewRepoStatusWindow(path)
if rstatus == nil {
// log.Info("path isn't a repo I can figure out yet", path)
// probably this isn't downloaded
return nil
}
newRepo := new(repo)
newRepo.status = rstatus
path = strings.TrimSuffix(path, "/") // trim any extranous '/' chars put in the config file by the user
if path == "" {
// just an empty line in the config file
return nil
}
newRepo.pLabel = grid.NewLabel(path).SetProgName("path")
newRepo.lastTag = grid.NewLabel("").SetProgName("lastTag")
newRepo.masterVersion = grid.NewLabel("").SetProgName("masterVersion")
newRepo.develVersion = grid.NewLabel("").SetProgName("develVersion")
newRepo.userVersion = grid.NewLabel("").SetProgName("userVersion")
newRepo.dirtyLabel = grid.NewLabel("")
newRepo.vLabel = grid.NewLabel("").SetProgName("current")
newRepo.endBox = grid.NewHorizontalBox("HBOX")
newRepo.endBox.NewButton("Configure", func() {
if newRepo.status == nil {
log.Warn("status window wasn't created")
return
}
newRepo.status.Toggle()
})
newRepo.endBox.NewButton("show diff", func() {
me.reposwin.Disable()
// newRepo.status.XtermNohup([]string{"git diff"})
newRepo.status.Xterm("git diff; bash")
me.reposwin.Enable()
})
newRepo.endBox.NewButton("commit all", func() {
me.reposwin.Disable()
// restore anything staged so everything can be reviewed
newRepo.status.RunCmd([]string{"git", "restore", "--staged", "."})
newRepo.status.XtermWait("git diff")
newRepo.status.XtermWait("git add --all")
newRepo.status.XtermWait("git commit -a")
newRepo.status.XtermWait("git push")
if newRepo.status.CheckDirty() {
// commit was not done, restore diff
newRepo.status.RunCmd([]string{"git", "restore", "--staged", "."})
} else {
newRepo.status.UpdateNew()
newRepo.newScan()
}
me.reposwin.Enable()
})
newRepo.hidden = false
// newRepo.status.SetMainWorkingName(master)
// newRepo.status.SetDevelWorkingName(devel)
// newRepo.status.SetUserWorkingName(user)
var showBuildB bool = false
switch newRepo.status.RepoType() {
case "binary":
// log.Info("compile here. Show()")
showBuildB = true
case "library":
// log.Info("library here. Hide()")
default:
// log.Info("unknown RepoType", newRepo.status.RepoType())
}
if showBuildB {
newRepo.endBox.NewButton("build", func() {
newRepo.status.Build()
})
}
me.allrepos[path] = newRepo
return newRepo
}
// deprecate this
func (r *repo) String() string {
return r.status.String()
}
/*
func (r *repo) getPath() string {
return r.path
}
*/

View File

@ -94,21 +94,31 @@ func globalBuildOptions(vbox *gui.Node) {
// you can merge everything into the devel branch and make sure it actually // you can merge everything into the devel branch and make sure it actually
// works. Then, when that is good, merge and version everything in master // works. Then, when that is good, merge and version everything in master
setBranchB = grid.NewButton("set current branch to:", func() { setBranchB = grid.NewButton("set current branch to:", func() {
log.Warn("set current branch to:", newBranch.String()) targetName := newBranch.String()
log.Warn("set current branch to:", targetName)
/* /*
me.toMoveToBranch = guiBranch.String() me.toMoveToBranch = guiBranch.String()
setCurrentBranch.SetLabel("set all branches to " + me.toMoveToBranch) setCurrentBranch.SetLabel("set all branches to " + me.toMoveToBranch)
me.mainBranch.Disable() me.mainBranch.Disable()
*/ */
for _, repo := range me.allrepos { for _, repo := range me.allrepos {
if repo.status.CheckoutMaster() { if targetName == "jcarr" {
log.Warn("set master branch worked", repo.String) if repo.status.CheckoutUser() {
repo.newScan() log.Warn("set master branch worked", repo.String())
repo.newScan()
} else {
log.Warn("set master branch failed", repo.String())
repo.newScan()
}
} else { } else {
log.Warn("set master branch failed", repo.String) if repo.status.CheckoutMaster() {
repo.newScan() log.Warn("set master branch worked", repo.String())
repo.newScan()
} else {
log.Warn("set master branch failed", repo.String())
repo.newScan()
}
} }
// return
} }
}) })
newBranch = grid.NewCombobox() newBranch = grid.NewCombobox()

View File

@ -45,7 +45,7 @@ func main() {
handleCmdLine() handleCmdLine()
for _, repo := range me.allrepos { for _, repo := range me.allrepos {
repo.status.Update() repo.status.UpdateNew()
repo.newScan() repo.newScan()
} }
me.Enable() me.Enable()

View File

@ -13,7 +13,8 @@ import (
"go.wit.com/log" "go.wit.com/log"
) )
func (r *repo) String() string { // deprecate
func (r *repo) StringOld() string {
return r.status.String() return r.status.String()
} }
@ -44,7 +45,7 @@ func splitLine(line string) (string, string, string, string) {
func myrepolist() []string { func myrepolist() []string {
homeDir, _ := os.UserHomeDir() homeDir, _ := os.UserHomeDir()
cfgfile := filepath.Join(homeDir, ".config/myrepolist") cfgfile := filepath.Join(homeDir, ".config/autotypist")
content, _ := ioutil.ReadFile(cfgfile) content, _ := ioutil.ReadFile(cfgfile)
out := string(content) out := string(content)
out = strings.TrimSpace(out) out = strings.TrimSpace(out)
@ -52,141 +53,6 @@ func myrepolist() []string {
return lines return lines
} }
func (r *repo) Hide() {
r.pLabel.Hide()
r.lastTag.Hide()
r.vLabel.Hide()
r.masterVersion.Hide()
r.develVersion.Hide()
r.userVersion.Hide()
r.dirtyLabel.Hide()
r.endBox.Hide()
// r.statusButton.Hide()
// r.diffButton.Hide()
r.hidden = true
}
func (r *repo) Hidden() bool {
return r.hidden
}
func (r *repo) Show() {
r.pLabel.Show()
r.lastTag.Show()
r.vLabel.Show()
r.masterVersion.Show()
r.develVersion.Show()
r.userVersion.Show()
r.dirtyLabel.Show()
r.endBox.Show()
// r.statusButton.Show()
// r.diffButton.Show()
r.hidden = false
}
func addRepo(grid *gui.Node, path string, master string, devel string, user string) {
_, ok := me.allrepos[path]
if ok {
log.Info("addRepo() already had path", path)
return
}
// log.Info("addRepo() attempting to add path", path)
newRepo := new(repo)
path = strings.TrimSuffix(path, "/") // trim any extranous '/' chars put in the config file by the user
if path == "" {
// just an empty line in the config file
return
}
if strings.HasPrefix(path, "/") {
// this is a direct path. don't check if it is a golang repo
} else {
if repostatus.VerifyLocalGoRepo(path) {
// log.Verbose("newRepo actually exists", )
} else {
// log.Warn("repostatus.VerifyLocalGoRepo() failed for for", path, master, devel, user)
return
}
}
newRepo.pLabel = grid.NewLabel(path).SetProgName("path")
newRepo.lastTag = grid.NewLabel("").SetProgName("lastTag")
newRepo.masterVersion = grid.NewLabel("").SetProgName("masterVersion")
newRepo.develVersion = grid.NewLabel("").SetProgName("develVersion")
newRepo.userVersion = grid.NewLabel("").SetProgName("userVersion")
newRepo.dirtyLabel = grid.NewLabel("")
newRepo.vLabel = grid.NewLabel("").SetProgName("current")
newRepo.endBox = grid.NewHorizontalBox("HBOX")
newRepo.endBox.NewButton("Configure", func() {
if newRepo.status == nil {
log.Warn("status window wasn't created")
return
}
newRepo.status.Toggle()
})
newRepo.endBox.NewButton("show diff", func() {
me.reposwin.Disable()
// newRepo.status.XtermNohup([]string{"git diff"})
newRepo.status.Xterm("git diff; bash")
me.reposwin.Enable()
})
newRepo.endBox.NewButton("commit all", func() {
me.reposwin.Disable()
// restore anything staged so everything can be reviewed
newRepo.status.RunCmd([]string{"git", "restore", "--staged", "."})
newRepo.status.XtermWait("git diff")
newRepo.status.XtermWait("git add --all")
newRepo.status.XtermWait("git commit -a")
newRepo.status.XtermWait("git push")
if newRepo.status.CheckDirty() {
// commit was not done, restore diff
newRepo.status.RunCmd([]string{"git", "restore", "--staged", "."})
} else {
newRepo.status.Update()
newRepo.newScan()
}
me.reposwin.Enable()
})
newRepo.status = repostatus.NewRepoStatusWindow(path)
newRepo.hidden = false
newRepo.status.SetMainWorkingName(master)
newRepo.status.SetDevelWorkingName(devel)
newRepo.status.SetUserWorkingName(user)
var showBuildB bool = false
switch newRepo.status.RepoType() {
case "binary":
// log.Info("compile here. Show()")
showBuildB = true
case "library":
// log.Info("library here. Hide()")
default:
log.Info("unknown RepoType", newRepo.status.RepoType())
}
if showBuildB {
newRepo.endBox.NewButton("build", func() {
newRepo.status.Build()
})
}
me.allrepos[path] = newRepo
}
// This creates a window // This creates a window
func repolistWindow() { func repolistWindow() {
me.reposwin = gadgets.NewBasicWindow(me.myGui, "All git repositories in ~/go/src/") me.reposwin = gadgets.NewBasicWindow(me.myGui, "All git repositories in ~/go/src/")
@ -232,7 +98,11 @@ func repolistWindow() {
if ubranch == "" { if ubranch == "" {
ubranch = usr.Username ubranch = usr.Username
} }
addRepo(me.reposgrid, path, mbranch, dbranch, ubranch) 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() me.reposgrid.NextRow()
} }
@ -279,7 +149,7 @@ func repoAllButtons(box *gui.Node) {
box1 := hbox.Box().Vertical() box1 := hbox.Box().Vertical()
box1.NewButton("status.Update() all", func() { box1.NewButton("status.Update() all", func() {
for _, repo := range me.allrepos { for _, repo := range me.allrepos {
repo.status.Update() repo.status.UpdateNew()
repo.newScan() repo.newScan()
} }
}) })
@ -352,14 +222,14 @@ func mergeAllDevelToMain() bool {
continue continue
} }
log.Info("found", repo.String(), repo.dirtyLabel.String()) log.Info("found", repo.String(), repo.dirtyLabel.String())
// repo.status.Update() repo.status.UpdateNew()
if repo.status.RunDevelMergeB() { if repo.status.RunDevelMergeB() {
log.Warn("THINGS SEEM OK fullAutomation() returned true.") log.Warn("THINGS SEEM OK fullAutomation() returned true.")
} else { } else {
log.Warn("THINGS FAILED fullAutomation() returned false") log.Warn("THINGS FAILED fullAutomation() returned false")
return false return false
} }
repo.status.Update() repo.status.UpdateNew()
repo.newScan() repo.newScan()
} }
log.Warn("EVERYTHING WORKED") log.Warn("EVERYTHING WORKED")
@ -382,14 +252,14 @@ func mergeAllUserToDevel() bool {
continue continue
} }
log.Info("found", repo.String(), repo.dirtyLabel.String()) log.Info("found", repo.String(), repo.dirtyLabel.String())
// repo.status.Update() repo.status.UpdateNew()
if repo.status.RunDevelMergeB() { if repo.status.RunDevelMergeB() {
log.Warn("THINGS SEEM OK fullAutomation() returned true.") log.Warn("THINGS SEEM OK fullAutomation() returned true.")
} else { } else {
log.Warn("THINGS FAILED fullAutomation() returned false") log.Warn("THINGS FAILED fullAutomation() returned false")
return false return false
} }
repo.status.Update() repo.status.UpdateNew()
repo.newScan() repo.newScan()
} }
log.Warn("EVERYTHING WORKED") log.Warn("EVERYTHING WORKED")

View File

@ -85,8 +85,7 @@ type autoType struct {
} }
type repo struct { type repo struct {
hidden bool hidden bool
// path string
lasttagrev string lasttagrev string
lasttag string lasttag string
giturl string giturl string