diff options
| author | Jeff Carr <[email protected]> | 2025-01-29 16:18:32 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-01-29 16:18:32 -0600 |
| commit | 2395a4466e9c08112372c480b30ac0823eeeb549 (patch) | |
| tree | ae008b2eadf649efd3950307f3896af891f84c33 /windowMain.go | |
| parent | 2b2de94eff3ec37566665a22804c58c1ce764665 (diff) | |
Diffstat (limited to 'windowMain.go')
| -rw-r--r-- | windowMain.go | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/windowMain.go b/windowMain.go new file mode 100644 index 0000000..3a5f9da --- /dev/null +++ b/windowMain.go @@ -0,0 +1,93 @@ +package repostatus + +import ( + "os" + + "go.wit.com/lib/gadgets" + "go.wit.com/lib/protobuf/gitpb" + "go.wit.com/log" +) + +var windowMap map[string]*RepoStatus + +func init() { + windowMap = make(map[string]*RepoStatus) +} + +// makes a window of the status of the repo +// don't worry, you can think of it like Sierpinski carpet +// it's doesn't need to be displayed so it'll work fine even in an embedded space +func NewRepoStatusWindow(repo *gitpb.Repo) (*RepoStatus, error) { + path := repo.GetGoPath() + if windowMap[path] == nil { + log.Log(INFO, "NewRepoStatusWindow() adding new", path) + } else { + log.Warn("This already exists for path", path) + log.Warn("should return windowMap[path] here") + return windowMap[path], nil + } + + rs := &RepoStatus{ + ready: false, + } + rs.pb = repo + // realpath := repo.FullPath + // isGoLang := true + + // rs.tags = make(map[string]string) + rs.window = gadgets.RawBasicWindow("GO Repo Details " + path) + rs.window.Horizontal() + rs.window.Make() + basebox := rs.window.Box() + group := basebox.NewGroup("stuff") + primarybox := group.Box() + primarybox.Horizontal() + // box2 := group.Box() + rs.ready = true + rs.window.Custom = func() { + rs.Hide() + log.Warn("repostatus user closed the window()") + } + + // display the status of the git repository + rs.drawGitStatus(primarybox) + + // display the git branches and options + rs.makeBranchesBox(primarybox) + + // show standard git commit and merge controls + rs.drawGitCommands(primarybox) + + // save ~/go/src & the whole path strings + rs.path.SetValue(path) + rs.goSrcPath.SetValue(os.Getenv("FORGE_GOSRC")) + rs.realPath.SetValue(rs.pb.GetFullPath()) + + // add all the tags + // rs.makeTagBox(box2) + + // rs.readGitConfig() + + if rs.pb.GetReadOnly() { + rs.readOnly.SetValue("true") + } else { + rs.readOnly.SetValue("false") + } + rs.mainWorkingName.SetText(rs.pb.GetMasterBranchName()) + rs.mainBranchVersion.SetLabel(rs.pb.GetMasterBranchName()) + + rs.develWorkingName.SetText(rs.pb.GetDevelBranchName()) + rs.develBranchVersion.SetLabel(rs.pb.GetDevelBranchName()) + + rs.userWorkingName.SetText(rs.pb.GetUserBranchName()) + rs.userBranchVersion.SetLabel(rs.pb.GetUserBranchName()) + + if rs.pb.GetGoPath() == "" { + // not golang repo + } else { + rs.isGoLang.SetText("true") + rs.goPath.SetText(rs.pb.GetGoPath()) + } + windowMap[path] = rs + return rs, nil +} |
