summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-02-22 19:28:23 -0600
committerJeff Carr <[email protected]>2024-02-22 19:28:23 -0600
commit3f29ea5ae720ae793d4ab4c8e06a786e8529dcbf (patch)
treed159fc3d16802d87c1af68cc1a19897dcaf2e6ad
parent1a3ac687309373257d2bdf4a1119eacf00de6f67 (diff)
redo addRepo() code
-rw-r--r--newRepo.go150
1 files changed, 150 insertions, 0 deletions
diff --git a/newRepo.go b/newRepo.go
new file mode 100644
index 0000000..a79d542
--- /dev/null
+++ b/newRepo.go
@@ -0,0 +1,150 @@
+package repolist
+
+import (
+ "strings"
+
+ "go.wit.com/lib/gui/repostatus"
+ "go.wit.com/log"
+)
+
+func (r *RepoList) NewRepo(path string) (*Repo, error) {
+ status, err := repostatus.New(path)
+ if err != nil {
+ return nil, err
+ }
+ newRepo := new(Repo)
+ 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 *Repo) {
+ 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() {
+ 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 *Repo) {
+ 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
+ }
+ })
+}