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 } }) }