203 lines
4.9 KiB
Go
203 lines
4.9 KiB
Go
package repolist
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"go.wit.com/lib/gui/repostatus"
|
|
"go.wit.com/log"
|
|
)
|
|
|
|
func (r *RepoRow) Hidden() bool {
|
|
return r.hidden
|
|
}
|
|
|
|
func (r *RepoRow) Hide() {
|
|
r.pLabel.Hide()
|
|
r.lastTag.Hide()
|
|
r.currentName.Hide()
|
|
r.currentVersion.Hide()
|
|
|
|
r.masterVersion.Hide()
|
|
r.develVersion.Hide()
|
|
r.userVersion.Hide()
|
|
|
|
r.gitState.Hide()
|
|
r.endBox.Hide()
|
|
// r.statusButton.Hide()
|
|
// r.diffButton.Hide()
|
|
r.goState.Hide()
|
|
r.targetV.Hide()
|
|
r.hidden = true
|
|
}
|
|
|
|
func (r *RepoRow) Show() {
|
|
r.pLabel.Show()
|
|
r.lastTag.Show()
|
|
r.currentName.Show()
|
|
r.currentVersion.Show()
|
|
|
|
r.masterVersion.Show()
|
|
r.develVersion.Show()
|
|
r.userVersion.Show()
|
|
|
|
r.gitState.Show()
|
|
r.endBox.Show()
|
|
// r.statusButton.Show()
|
|
// r.diffButton.Show()
|
|
r.goState.Show()
|
|
r.targetV.Show()
|
|
r.hidden = false
|
|
}
|
|
|
|
func (r *RepoList) NewRepo(path string) (*RepoRow, error) {
|
|
test, ok := r.allrepos[path]
|
|
if ok {
|
|
// this repo already exists
|
|
return test, nil
|
|
}
|
|
|
|
status, err := repostatus.New(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
newRepo := new(RepoRow)
|
|
newRepo.Status = status
|
|
|
|
newRepo.pLabel = r.reposgrid.NewLabel(path).SetProgName("path")
|
|
newRepo.hidden = false
|
|
|
|
r.allrepos[path] = newRepo
|
|
newRepo.NewScan()
|
|
|
|
switch r.viewName {
|
|
case "autotypist":
|
|
r.makeAutotypistView(newRepo)
|
|
case "guireleaser":
|
|
r.makeGuireleaserView(newRepo)
|
|
default:
|
|
r.makeAutotypistView(newRepo)
|
|
}
|
|
r.reposgrid.NextRow()
|
|
return newRepo, nil
|
|
}
|
|
|
|
func (r *RepoList) makeAutotypistView(newRepo *RepoRow) {
|
|
grid := r.reposgrid
|
|
|
|
newRepo.lastTag = newRepo.Status.MirrorLastTag()
|
|
grid.Append(newRepo.lastTag)
|
|
|
|
newRepo.masterVersion = newRepo.Status.MirrorMasterVersion()
|
|
grid.Append(newRepo.masterVersion)
|
|
|
|
newRepo.develVersion = newRepo.Status.MirrorDevelVersion()
|
|
grid.Append(newRepo.develVersion)
|
|
|
|
newRepo.userVersion = newRepo.Status.MirrorUserVersion()
|
|
grid.Append(newRepo.userVersion)
|
|
|
|
newRepo.gitState = newRepo.Status.MirrorGitState()
|
|
grid.Append(newRepo.gitState)
|
|
|
|
newRepo.currentName = newRepo.Status.MirrorCurrentName()
|
|
grid.Append(newRepo.currentName)
|
|
newRepo.currentVersion = newRepo.Status.MirrorCurrentVersion()
|
|
grid.Append(newRepo.currentVersion)
|
|
|
|
newRepo.endBox = grid.NewHorizontalBox("HBOX")
|
|
newRepo.endBox.NewButton("Configure", func() {
|
|
newRepo.Status.Toggle()
|
|
})
|
|
|
|
newRepo.endBox.NewButton("show diff", func() {
|
|
r.reposbox.Disable()
|
|
log.Log(REPOWARN, "show diff currentName =", newRepo.currentName.String())
|
|
log.Log(REPOWARN, "show diff masterVersion =", newRepo.masterVersion.String())
|
|
// newRepo.Status.XtermNohup([]string{"git diff"})
|
|
newRepo.Status.Xterm("git diff; bash")
|
|
r.reposbox.Enable()
|
|
})
|
|
|
|
newRepo.endBox.NewButton("commit all", func() {
|
|
if !newRepo.Status.IsUserBranch() {
|
|
log.Log(REPOWARN, "can not commit on non user branch")
|
|
return
|
|
}
|
|
r.reposbox.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.NewScan()
|
|
}
|
|
r.reposbox.Enable()
|
|
})
|
|
|
|
if strings.HasPrefix(newRepo.GoPath(), "go.wit.com/apps") {
|
|
var showBuildB bool = false
|
|
switch newRepo.Status.RepoType() {
|
|
case "binary":
|
|
log.Info("showing compile here button")
|
|
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()
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
func (r *RepoList) makeGuireleaserView(newRepo *RepoRow) {
|
|
grid := r.reposgrid
|
|
|
|
newRepo.targetV = newRepo.Status.MirrorTargetVersion()
|
|
grid.Append(newRepo.targetV)
|
|
|
|
newRepo.lastTag = newRepo.Status.MirrorLastTag()
|
|
grid.Append(newRepo.lastTag)
|
|
|
|
newRepo.currentName = newRepo.Status.MirrorCurrentName()
|
|
grid.Append(newRepo.currentName)
|
|
newRepo.currentVersion = newRepo.Status.MirrorCurrentVersion()
|
|
grid.Append(newRepo.currentVersion)
|
|
|
|
newRepo.gitState = newRepo.Status.MirrorGitState()
|
|
grid.Append(newRepo.gitState)
|
|
|
|
newRepo.goState = grid.NewLabel("goState")
|
|
|
|
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("CheckValidGoSum()", func() {
|
|
ok, err := r.CheckValidGoSum(newRepo)
|
|
if err != nil {
|
|
log.Info("go mod tidy did not work err =", err)
|
|
return
|
|
}
|
|
if ok {
|
|
log.Info("repo has go.sum requirements that are clean")
|
|
newRepo.goState.SetText("GOOD")
|
|
return
|
|
}
|
|
})
|
|
}
|