2024-02-17 08:39:55 -06:00
|
|
|
package repolist
|
|
|
|
|
|
|
|
import (
|
2024-02-18 07:25:16 -06:00
|
|
|
"errors"
|
2024-02-17 08:39:55 -06:00
|
|
|
|
|
|
|
"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()
|
2024-02-18 15:09:35 -06:00
|
|
|
r.goSumStatus.Hide()
|
2024-02-17 08:39:55 -06:00
|
|
|
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()
|
2024-02-18 15:09:35 -06:00
|
|
|
r.goSumStatus.Show()
|
2024-02-17 08:39:55 -06:00
|
|
|
r.hidden = false
|
|
|
|
}
|
|
|
|
|
2024-02-18 07:25:16 -06:00
|
|
|
func (r *RepoList) AddRepo(path string, master string, devel string, user string) (error, *Repo) {
|
2024-02-17 14:22:24 -06:00
|
|
|
return r.addRepo(r.reposgrid, path, master, devel, user)
|
2024-02-17 08:39:55 -06:00
|
|
|
}
|
|
|
|
|
2024-02-18 07:25:16 -06:00
|
|
|
func (r *RepoList) addRepo(grid *gui.Node, path string, master string, devel string, user string) (error, *Repo) {
|
|
|
|
existingr, ok := r.allrepos[path]
|
2024-02-17 08:39:55 -06:00
|
|
|
if ok {
|
|
|
|
log.Info("addRepo() already had path", path)
|
2024-02-18 07:25:16 -06:00
|
|
|
return nil, existingr
|
2024-02-17 08:39:55 -06:00
|
|
|
}
|
|
|
|
// log.Info("addRepo() attempting to add path", path)
|
2024-02-18 07:25:16 -06:00
|
|
|
err, rstatus := repostatus.NewRepoStatusWindow(path)
|
2024-02-17 08:39:55 -06:00
|
|
|
|
|
|
|
if rstatus == nil {
|
2024-02-18 07:25:16 -06:00
|
|
|
log.Info("add failed. I can figure this out yet", path, err)
|
2024-02-17 08:39:55 -06:00
|
|
|
// probably this isn't downloaded
|
2024-02-18 07:25:16 -06:00
|
|
|
return err, nil
|
2024-02-17 08:39:55 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
newRepo := new(Repo)
|
2024-02-17 15:48:56 -06:00
|
|
|
newRepo.Status = rstatus
|
2024-02-17 08:39:55 -06:00
|
|
|
|
2024-02-18 07:25:16 -06:00
|
|
|
// path = strings.TrimSuffix(path, "/") // trim any extranous '/' chars put in the config file by the user
|
2024-02-17 08:39:55 -06:00
|
|
|
if path == "" {
|
|
|
|
// just an empty line in the config file
|
2024-02-18 07:25:16 -06:00
|
|
|
return errors.New("you sent a blank path. stop being silly"), nil
|
2024-02-17 08:39:55 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
newRepo.pLabel = grid.NewLabel(path).SetProgName("path")
|
|
|
|
newRepo.lastTag = grid.NewLabel("").SetProgName("lastTag")
|
|
|
|
newRepo.masterVersion = grid.NewLabel("").SetProgName("masterVersion")
|
2024-02-18 10:49:52 -06:00
|
|
|
newRepo.hidden = false
|
|
|
|
switch r.viewName {
|
|
|
|
case "autotypist":
|
|
|
|
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 {
|
|
|
|
// this should never happen, but it does happen because I'm not that smart and forget I can nil Status
|
|
|
|
// for some reason that makes sense in my head. again, I'm not that smart
|
|
|
|
log.Warn("status window wasn't created")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
newRepo.Status.Toggle()
|
|
|
|
})
|
|
|
|
|
|
|
|
newRepo.endBox.NewButton("show diff", func() {
|
|
|
|
r.reposbox.Disable()
|
|
|
|
// newRepo.Status.XtermNohup([]string{"git diff"})
|
|
|
|
newRepo.Status.Xterm("git diff; bash")
|
|
|
|
r.reposbox.Enable()
|
|
|
|
})
|
|
|
|
|
|
|
|
newRepo.endBox.NewButton("commit all", func() {
|
|
|
|
r.reposbox.Disable()
|
|
|
|
// restore anything staged so everything can be reviewed
|
2024-02-17 15:48:56 -06:00
|
|
|
newRepo.Status.RunCmd([]string{"git", "restore", "--staged", "."})
|
2024-02-18 10:49:52 -06:00
|
|
|
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.NewScan()
|
|
|
|
}
|
|
|
|
r.reposbox.Enable()
|
|
|
|
})
|
|
|
|
|
|
|
|
// 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())
|
2024-02-17 08:39:55 -06:00
|
|
|
}
|
2024-02-18 10:49:52 -06:00
|
|
|
if showBuildB {
|
|
|
|
newRepo.endBox.NewButton("build", func() {
|
|
|
|
newRepo.Status.Build()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
newRepo.goSumStatus = r.blind.NewLabel("in the blind")
|
|
|
|
case "guireleaser":
|
2024-02-18 15:09:35 -06:00
|
|
|
newRepo.develVersion = r.blind.NewLabel("").SetProgName("develVersion")
|
|
|
|
newRepo.userVersion = r.blind.NewLabel("").SetProgName("userVersion")
|
2024-02-18 10:49:52 -06:00
|
|
|
newRepo.dirtyLabel = grid.NewLabel("")
|
2024-02-18 15:09:35 -06:00
|
|
|
newRepo.goSumStatus = grid.NewLabel("in the blind")
|
2024-02-18 10:49:52 -06:00
|
|
|
newRepo.vLabel = grid.NewLabel("").SetProgName("current")
|
|
|
|
newRepo.endBox = grid.NewHorizontalBox("HBOX")
|
|
|
|
newRepo.endBox.NewButton("Configure", func() {
|
|
|
|
if newRepo.Status == nil {
|
|
|
|
// this should never happen, but it does happen because I'm not that smart and forget I can nil Status
|
|
|
|
// for some reason that makes sense in my head. again, I'm not that smart
|
|
|
|
log.Warn("status window wasn't created")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
newRepo.Status.Toggle()
|
|
|
|
})
|
2024-02-17 08:39:55 -06:00
|
|
|
|
2024-02-18 10:49:52 -06:00
|
|
|
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()
|
|
|
|
})
|
|
|
|
}
|
2024-02-17 08:39:55 -06:00
|
|
|
default:
|
|
|
|
}
|
|
|
|
grid.NextRow()
|
|
|
|
|
2024-02-17 14:22:24 -06:00
|
|
|
r.allrepos[path] = newRepo
|
2024-02-18 07:25:16 -06:00
|
|
|
return nil, newRepo
|
2024-02-17 08:39:55 -06:00
|
|
|
}
|