// Code generated by go.wit.com/apps/autogenpb DO NOT EDIT. // go install go.wit.com/apps/autogenpb@latest // // This file was autogenerated with autogenpb: // autogenpb v0.5.27 Built on 2025/10/16 17:13:05 ( 52 m) // Theese sort.pb.go and marshal.pb.go files are autogenerated // The autogenpb sources have example .proto files with instructions // package gitpb import ( "fmt" "sort" "strings" "go.wit.com/lib/env" "go.wit.com/log" ) func (pb *Stats) SortCtime() { statMu.Lock() defer statMu.Unlock() sort.Sort(sortStatCtime(pb.Stats)) } // sort struct by Ctime type sortStatCtime []*Stat func (a sortStatCtime) Len() int { return len(a) } func (a sortStatCtime) Less(i, j int) bool { itime := a[i].CommitTime.AsTime() jtime := a[j].CommitTime.AsTime() return itime.Before(jtime) } func (a sortStatCtime) Swap(i, j int) { a[i], a[j] = a[j], a[i] } // sort tags by Version() // returns true if anything changed var wasSorted bool func (pb *Stats) SortVersion() bool { statMu.Lock() defer statMu.Unlock() wasSorted = true sort.Sort(sortStatVersion(pb.Stats)) return wasSorted } func tokVersion(r *Stat) (*Vers, error) { var ver string if strings.HasPrefix(r.Name, "refs/tags/") { ver = strings.TrimPrefix(r.Name, "refs/tags/") } else if strings.HasPrefix(r.Name, "refs/heads/") { ver = strings.TrimPrefix(r.Name, "refs/heads/") } else if strings.HasPrefix(r.Name, "refs/remotes/") { ver = strings.TrimPrefix(r.Name, "refs/remotes/") } else if strings.HasPrefix(r.Name, "refs/") { ver = strings.TrimPrefix(r.Name, "refs/") } else { ver = fmt.Sprintf("%s", r.Name) } tok, err := TokenVersions(ver) return tok, err } // sort struct by Version type sortStatVersion []*Stat func (a sortStatVersion) Len() int { return len(a) } func (a sortStatVersion) Less(i, j int) bool { atok, err1 := tokVersion(a[i]) btok, err2 := tokVersion(a[j]) _, _ = err1, err2 cint := CompareVers(atok, btok) if cint == 1 { if env.True("stats") { log.Info("false one", atok, "vs", btok, err1, err2, a[i].Name, a[j].Name) } return false } if cint == -1 { if env.True("stats") { log.Info("true less", atok, "vs", btok, err1, err2, err2, a[i].Name, a[j].Name) } wasSorted = false return true } if env.True("stats") { log.Info("false 0 ", atok, "vs", btok, err1, err2, err2, a[i].Name, a[j].Name) } return false } func (a sortStatVersion) Swap(i, j int) { a[i], a[j] = a[j], a[i] }