working on branches

This commit is contained in:
Jeff Carr 2025-01-17 13:20:15 -06:00
parent 9acbb24284
commit fc9c26cc8d
1 changed files with 69 additions and 3 deletions

View File

@ -1,6 +1,7 @@
package main
import (
"slices"
"time"
"go.wit.com/lib/gui/shell"
@ -15,14 +16,79 @@ func doExamine() bool {
repo := all.Next()
if tag := repo.ExamineBranches(); tag != nil {
me.found.AppendByGoPath(repo)
ctime := tag.Creatordate.AsTime()
dur := time.Since(ctime)
log.Printf("UNKNOWN BRANCH %-50s %s %4s %s\n", repo.GetFullPath(), tag.Hash, shell.FormatDuration(dur), tag.Refname)
// ctime := tag.Creatordate.AsTime()
// dur := time.Since(ctime)
// log.Printf("UNKNOWN BRANCH %-50s %s %4s %s\n", repo.GetFullPath(), tag.Hash, shell.FormatDuration(dur), tag.Refname)
repo.CurrentTag = tag
} else {
repo.CurrentTag = nil
}
}
if len(me.found.Repos) == 0 {
return true
}
// slices.Reverse(me.found.Repos)
slices.SortFunc(me.found.Repos, func(a, b *gitpb.Repo) int {
atime := a.CurrentTag.Creatordate.AsTime()
btime := b.CurrentTag.Creatordate.AsTime()
if atime.Before(btime) {
// log.Info("atime vs btime is 0", atime, btime)
return 1
}
// log.Info("atime vs btime is 1", atime, btime)
return -1
})
all = me.found.All()
me.found = new(gitpb.Repos)
for all.Scan() {
repo := all.Next()
if isNormal(repo) {
continue
}
tag := repo.CurrentTag
ctime := tag.Creatordate.AsTime()
dur := time.Since(ctime)
log.Printf("UNKNOWN BRANCH %-50s %s %4s %s\n", repo.GetFullPath(), tag.Hash, shell.FormatDuration(dur), tag.Refname)
showNotDevel(repo)
me.found.AppendByGoPath(repo)
}
me.forge.PrintHumanTableDirty(me.found)
return false
}
func isNormal(repo *gitpb.Repo) bool {
if repo.IsDirty() {
return true
}
if repo.GetUserVersion() != repo.GetDevelVersion() {
return true
}
return false
}
func showNotDevel(repo *gitpb.Repo) error {
var cmd []string
cmd = append(cmd, "git")
cmd = append(cmd, "log")
cmd = append(cmd, "--format=\"%H\"")
cmd = append(cmd, repo.CurrentTag.Hash)
cmd = append(cmd, "--not")
cmd = append(cmd, "devel")
r, err := repo.RunStrictNew(cmd)
if err != nil {
log.Info("Error", cmd, err)
return err
}
if r == nil {
log.Info("Error r == nil", cmd, err)
return nil
}
if len(r.Stdout) != 0 {
for i, line := range r.Stdout {
log.Info(i, line)
}
}
return nil
}