diff options
Diffstat (limited to 'addRepo.go')
| -rw-r--r-- | addRepo.go | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/addRepo.go b/addRepo.go new file mode 100644 index 0000000..a44dffa --- /dev/null +++ b/addRepo.go @@ -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 +} +*/ |
