package repolist import ( "errors" "go.wit.com/lib/gui/repostatus" "go.wit.com/lib/protobuf/gitpb" "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.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.targetV.Show() r.hidden = false } func (r *RepoRow) Show2() { 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.targetV.Show() r.hidden = false } // adds a gui row to the table based off the repo protobuf func (r *RepoList) AddRepo(pb *gitpb.Repo) (*RepoRow, error) { if !pb.IsDirectory() { // this directory doesn't exist anymore // was moved, or isn't in the ~/go/src or wherever go.work is return nil, errors.New("path is gone: " + pb.FullPath) } test, ok := r.allrepos[pb.GetGoPath()] if ok { // this repo gopath was already added return test, nil } status, err := repostatus.NewRepoStatusWindow(pb) if err != nil { return nil, err } newRepo := new(RepoRow) newRepo.Status = status newRepo.pb = pb newRepo.Status.InitOk = false newRepo.pLabel = r.reposgrid.NewLabel(pb.GoPath).SetProgName("path") newRepo.hidden = false r.allrepos[pb.GoPath] = newRepo // newRepo.NewScan() newRepo.lastTag = r.reposgrid.NewLabel("") newRepo.masterVersion = r.reposgrid.NewLabel("") newRepo.develVersion = r.reposgrid.NewLabel("") newRepo.userVersion = r.reposgrid.NewLabel("") newRepo.gitState = r.reposgrid.NewLabel("") newRepo.currentName = r.reposgrid.NewLabel("") newRepo.currentVersion = r.reposgrid.NewLabel("") newRepo.endBox = r.reposgrid.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.Run([]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.Run([]string{"git", "restore", "--staged", "."}) } else { newRepo.NewScan() } r.reposbox.Enable() }) r.reposgrid.NextRow() newRepo.Status.InitOk = true return newRepo, nil }