// Copyright 2025 WIT.COM Inc Licensed GPL 3.0 package forgepb import ( "fmt" "go.wit.com/lib/cobol" "go.wit.com/lib/protobuf/gitpb" "go.wit.com/log" ) // this is the default table layout for repos in forge func (f *Forge) PrintTable(pb *gitpb.Repos) { f.PrintDefaultTB(pb) } func (f *Forge) PrintDefaultTB(pb *gitpb.Repos) string { pb.SortByUserVersion() tablePB := f.makeDefaultTB(pb) tablePB.PrintTable() var dirty int var writable int var bins int var protos int for repo := range pb.IterAll() { if repo.IsDirty() { dirty += 1 } if repo.IsBinary() { bins += 1 } if repo.IsProtobuf() { protos += 1 } if f.Config.IsWritable(repo.Namespace) { writable += 1 } } return log.Sprintf("f.DefaultRepos: total=(%d) dirty=(%d) writable=(%d) binaries=(%d) protobufs(%d)", pb.Len(), dirty, writable, bins, protos) } func (f *Forge) NormalCheckTB(pb *gitpb.Repos) string { var col *gitpb.RepoFunc t := f.makeDefaultBaseTB(pb) col = t.AddStateChange() col.Width = 16 col = t.AddState() col.Width = -1 t.PrintTable() return log.Sprintf("f.NormalCheck: total=(%d)", pb.Len()) } func (f *Forge) getRepoType(repo *gitpb.Repo) string { var rtype string = repo.GetRepoType() switch rtype { case "binary": rtype = "GO bin" case "library": rtype = "GO lib" case "protobuf": rtype = "GO pb" } if f.IsPrivate(repo) { rtype = "priv" } return rtype } func (f *Forge) makeDefaultTB(pb *gitpb.Repos) *gitpb.ReposTable { t := f.makeDefaultBaseTB(pb) var col *gitpb.RepoFunc col = t.AddStringFunc("type", func(r *gitpb.Repo) string { return f.getRepoType(r) }) col.Width = 6 col = t.AddStringFunc("r/w", func(r *gitpb.Repo) string { if f.IsWritable(r) { return "rw" } return "" }) col.Width = 3 col = t.AddState() col.Width = 12 col = t.AddURL() col.Width = -1 return t } func (f *Forge) makeDefaultBaseTB(pb *gitpb.Repos) *gitpb.ReposTable { t := pb.NewTable("forgedList") t.NewUuid() var col *gitpb.RepoFunc col = t.AddNamespace() col.Width = 33 col.Header.Name = fmt.Sprintf("Repos (%s) (%s)", f.cache.Name, f.mode.String()) col = t.AddCurrentBranchName() col.Width = 7 col.Header.Name = "branch" col = t.AddStringFunc("age", func(r *gitpb.Repo) string { if r.IsDirty() { return "" } dur := r.NewestAge() return cobol.FormatDuration(dur) }) col.Width = 5 col = t.AddStringFunc("user", func(r *gitpb.Repo) string { ver := r.GetUserVersion() if r.IsDirty() { ver = "* " + ver } return ver }) col.Width = 14 col = t.AddDevelVersion() col.Width = 12 col.Header.Name = "devel" col = t.AddMasterVersion() col.Width = 12 col.Header.Name = "master" return t }