diff options
| author | Jeff Carr <[email protected]> | 2024-02-12 06:23:31 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-02-12 06:23:31 -0600 |
| commit | ba4051cb0c0f253a41d2b7675fc4e37872230df4 (patch) | |
| tree | e9c4612fe97d91a00cfd69b81869fd5efdbca2fe /tagWindow.go | |
| parent | 2b172338f61d0f0b003b5c8198b979b24d3b60ac (diff) | |
smarter tag window
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'tagWindow.go')
| -rw-r--r-- | tagWindow.go | 63 |
1 files changed, 45 insertions, 18 deletions
diff --git a/tagWindow.go b/tagWindow.go index 5e51782..1431312 100644 --- a/tagWindow.go +++ b/tagWindow.go @@ -23,6 +23,9 @@ type repoTag struct { // the .git/ref date date *gui.Node + // the tag comment + subject *gui.Node + // a button to delete the tag deleteB *gui.Node } @@ -43,17 +46,27 @@ type repoTags struct { tags []*repoTag } +func (tw *repoTags) Hidden() bool { + return tw.window.Hidden() +} + +func (tw *repoTags) Show() { + log.Info("tw *repoTags Show()") + tw.window.Show() +} + +func (tw *repoTags) Hide() { + log.Info("tw *repoTags Hide()") + tw.window.Hide() +} + func (rs *RepoStatus) TagWindow() *repoTags { // return the window if it was already created - if rs.TagsW != nil { - rs.TagsW.window.Toggle() - return rs.TagsW - } tags := new(repoTags) rs.TagsW = tags tags.rs = rs - tags.window = gadgets.RawBasicWindow("tags " + rs.String()) + tags.window = gadgets.RawBasicWindow("tags " + rs.String()).Make() vbox := tags.window.Box() tags.newTagBox(vbox) @@ -63,14 +76,21 @@ func (rs *RepoStatus) TagWindow() *repoTags { func (tagW *repoTags) newTagBox(box *gui.Node) { tagW.group = box.NewGroup(".git tags for " + tagW.rs.String()) - tagW.group.NewButton("prune tags", func() { - tagW.Prune() - }) - tagW.group.NewButton("show all", func() { - for _, t := range tagW.tags { - t.Show() + // tagW.group.NewButton("prune tags", func() { + // tagW.Prune() + // }) + var dups *gui.Node + + dups = tagW.group.NewCheckbox("Show duplicate tags").SetChecked(false) + dups.Custom = func() { + if dups.Checked() { + tagW.Prune() + } else { + for _, t := range tagW.tags { + t.Show() + } } - }) + } tagW.group.NewButton("delete all", func() { for i, t := range tagW.tags { if t.hidden { @@ -82,22 +102,22 @@ func (tagW *repoTags) newTagBox(box *gui.Node) { } }) - grid := tagW.group.NewGrid("tags", 4, 1) + grid := tagW.group.NewGrid("tags", 0, 0) tagW.grid = grid grid.NewLabel("version") grid.NewLabel("ref") grid.NewLabel("date") - grid.NewLabel("delete") + grid.NewLabel("release subject") // works like a typerwriter - // grid.NextRow() + grid.NextRow() // git tag --list --sort=taggerdate // git for-each-ref --sort=taggerdate --format '%(tag) %(*objectname) %(taggerdate)' // git rev-parse HEAD // if last tag == HEAD, then remove it - tags := []string{"%(tag)", "%(*objectname)", "%(taggerdate:raw)"} + tags := []string{"%(tag)", "%(*objectname)", "%(taggerdate:raw)", "%(subject)"} format := strings.Join(tags, "_,,,_") err, output := tagW.rs.RunCmd([]string{"git", "for-each-ref", "--sort=taggerdate", "--format", format}) if err != nil { @@ -120,14 +140,19 @@ func (tagW *repoTags) newTagBox(box *gui.Node) { rTag := new(repoTag) rTag.tag = grid.NewLabel(parts[0]) rTag.ref = grid.NewEntrybox(parts[1]) - rTag.date = grid.NewLabel(parts[2]) + + stamp, dur := getDateStamp(parts[2]) // + rTag.date = grid.NewLabel(stamp) + grid.NewLabel(dur) + + rTag.subject = grid.NewLabel(parts[3]) rTag.deleteB = grid.NewButton("delete", func() { log.Info("remove tag") }) tagW.tags = append(tagW.tags, rTag) // works like a typerwriter - // grid.NextRow() + grid.NextRow() } // reverse the git order // slices.Reverse(rtags.tags) @@ -260,6 +285,7 @@ func (rt *repoTag) Hide() { rt.tag.Hide() rt.ref.Hide() rt.date.Hide() + rt.subject.Hide() rt.deleteB.Hide() } @@ -268,5 +294,6 @@ func (rt *repoTag) Show() { rt.tag.Show() rt.ref.Show() rt.date.Show() + rt.subject.Show() rt.deleteB.Show() } |
