105 lines
2.2 KiB
Go
105 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"go.wit.com/gui"
|
|
"go.wit.com/log"
|
|
|
|
"go.wit.com/lib/gadgets"
|
|
"go.wit.com/lib/gui/repostatus"
|
|
)
|
|
|
|
var tagW *tagWindow
|
|
|
|
type tagWindow struct {
|
|
win *gadgets.BasicWindow
|
|
box *gui.Node
|
|
grid *gui.Node
|
|
group *gui.Node
|
|
allTags []*gitTag
|
|
}
|
|
|
|
type gitTag struct {
|
|
rs *repostatus.RepoStatus
|
|
hidden bool
|
|
}
|
|
|
|
func makeTagWindow() *tagWindow {
|
|
if tagW != nil {
|
|
tagW.win.Toggle()
|
|
return tagW
|
|
}
|
|
tagW = new(tagWindow)
|
|
tagW.win = gadgets.NewBasicWindow(me.myGui, "git tag tasks")
|
|
tagW.win.Custom = func() {
|
|
log.Warn("got to close")
|
|
}
|
|
|
|
tagW.win.Make()
|
|
tagW.win.StandardClose()
|
|
tagW.win.Draw()
|
|
|
|
tagW.box = tagW.win.Box()
|
|
topGrid := tagW.box.RawGrid()
|
|
tagW.group = tagW.box.NewGroup("tags")
|
|
tagW.grid = tagW.box.RawGrid()
|
|
|
|
topGrid.NewButton("list all tags", func() {
|
|
me.autotypistWindow.Disable()
|
|
defer me.autotypistWindow.Enable()
|
|
for _, repo := range me.allrepos {
|
|
tagsW := repo.status.TagsW
|
|
if tagsW == nil {
|
|
repo.status.TagWindow()
|
|
tagsW = repo.status.TagsW
|
|
// tagsW.Prune()
|
|
continue
|
|
}
|
|
allTags := tagsW.ListAll()
|
|
for _, t := range allTags {
|
|
log.Info("found tag:", t.TagString(), "from", repo.status.String())
|
|
}
|
|
}
|
|
}).SetProgName("TAGSLISTALL")
|
|
|
|
topGrid.NewButton("delete all dup tags", func() {
|
|
me.autotypistWindow.Disable()
|
|
defer me.autotypistWindow.Enable()
|
|
for _, repo := range me.allrepos {
|
|
if repo.String() == "go.wit.com/lib/gadgets" {
|
|
// only do log for now
|
|
} else {
|
|
// continue
|
|
}
|
|
tagsW := repo.status.TagsW
|
|
if tagsW == nil {
|
|
repo.status.TagWindow()
|
|
tagsW = repo.status.TagsW
|
|
continue
|
|
}
|
|
tagsW.PruneSmart()
|
|
deleteTags := tagsW.List()
|
|
for _, t := range deleteTags {
|
|
tagW.grid.NewLabel(t.TagString())
|
|
tagW.grid.NewLabel(repo.status.String())
|
|
tagW.grid.NewButton("delete", func() {
|
|
tagsW.Delete(t)
|
|
})
|
|
tagW.grid.NextRow()
|
|
if me.autoDryRun.Checked() {
|
|
log.Info("delete tag --dry-run:", t.TagString(), "from", repo.status.String())
|
|
} else {
|
|
log.Info("Deleting tag:", t.TagString(), "from", repo.status.String())
|
|
go tagsW.Delete(t)
|
|
log.Sleep(1)
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
return tagW
|
|
}
|
|
|
|
func (t *gitTag) Hide() {
|
|
t.hidden = true
|
|
}
|