summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-04 00:07:26 -0500
committerJeff Carr <[email protected]>2025-10-04 00:07:26 -0500
commitf50d2bcb19f2165723dcd5e5e20368561a2febc9 (patch)
tree43fb71304799c5e5e7229bac396dffbfe5aad159
parent21f674cc5d222ca3fde330d5f14e556555fff183 (diff)
make a table here for .deb building reposv0.1.4
-rw-r--r--doDebian.go18
-rw-r--r--tableRepos.go173
2 files changed, 175 insertions, 16 deletions
diff --git a/doDebian.go b/doDebian.go
index 60b0600..63921cc 100644
--- a/doDebian.go
+++ b/doDebian.go
@@ -27,7 +27,7 @@ func doDebian() {
}
initForge()
- doInstallScan()
+ // doInstallScan()
found := gitpb.NewRepos()
for check := range me.forge.Repos.IterAll() {
@@ -39,24 +39,10 @@ func doDebian() {
continue
}
- if check.IsGoPlugin() {
- continue
- }
found.Append(check)
}
- tablePB := me.forge.GetBuildBaseTB(found)
- log.Info("TABLE FUNC LEN=", len(tablePB.Funcs))
- col := tablePB.AddStringFunc("a", func(r *gitpb.Repo) string {
- debname := me.forge.Config.DebName(r.GetNamespace())
- if actualp := me.machine.FindInstalledByName(debname); actualp != nil {
- return "b"
- }
- return "c"
- })
- col.Width = 6
- log.Info("TABLE FUNC LEN=", len(tablePB.Funcs))
- tablePB.PrintTable()
+ printRepos(found)
// func (f *Forge) isInstalled(repo *gitpb.Repo) string {
// return "X"
diff --git a/tableRepos.go b/tableRepos.go
new file mode 100644
index 0000000..7cdf76e
--- /dev/null
+++ b/tableRepos.go
@@ -0,0 +1,173 @@
+// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
+// Use of this source code is governed by the GPL 3.0
+
+package main
+
+import (
+ "fmt"
+ "os"
+ "path/filepath"
+ "strings"
+
+ "go.wit.com/lib/protobuf/gitpb"
+ "go.wit.com/log"
+)
+
+func isPackageOnMirrors(repo *gitpb.Repo) bool {
+ manufactured := repo.GetCurrentVersion()
+ ver := trimNonNumericFromStart(manufactured)
+ name := me.forge.Config.DebName(repo.GetGoPath())
+ if actualp := me.machine.FindByVersion(name, ver); actualp != nil {
+ // end += " (version match) " + actualp.Version + " " + ver + " "
+ // repo.State = "on mirrors"
+ return true
+ }
+ return false
+}
+
+func printRepos(pb *gitpb.Repos) {
+ tablePB := pb.NewTable("deb details")
+ tablePB.NewUuid()
+
+ var col *gitpb.RepoFunc
+
+ col = tablePB.AddNamespace()
+ col.Width = 32
+
+ col = tablePB.AddStringFunc("RepoType", func(r *gitpb.Repo) string {
+ return me.forge.GetRepoType(r)
+ })
+ col.Width = 8
+
+ col = tablePB.AddStringFunc("Build Version", func(r *gitpb.Repo) string {
+ return me.forge.GetPackageVersion(r)
+ })
+ col.Width = 24
+
+ col = tablePB.AddStringFunc("is old", func(r *gitpb.Repo) string {
+ manufactured := r.GetCurrentVersion()
+ ver := trimNonNumericFromStart(manufactured)
+ name := me.forge.Config.DebName(r.GetGoPath())
+ if actualp := me.machine.FindByVersion(name, ver); actualp != nil {
+ // end += " (version match) " + actualp.Version + " " + ver + " "
+ return ""
+ }
+ if installedPackage := me.machine.FindInstalledByName(name); installedPackage != nil {
+ return installedPackage.Version
+ }
+ return ""
+ })
+ col.Width = 10
+
+ col = tablePB.AddStringFunc("I", func(r *gitpb.Repo) string {
+ name := me.forge.Config.DebName(r.GetNamespace())
+ if me.machine.IsInstalled(name) {
+ return "X"
+ }
+ // debname := me.forge.Config.DebName(r.GetNamespace())
+ // if actualp := me.machine.FindInstalledByName(debname); actualp != nil {
+ // return "X"
+ // }
+ return ""
+ })
+ col.Width = 1
+
+ col = tablePB.AddStringFunc("done", func(r *gitpb.Repo) string {
+ if isPackageOnMirrors(r) {
+ return "yes"
+ }
+ return ""
+ })
+ col.Width = 4
+
+ col = tablePB.AddStringFunc("build", func(r *gitpb.Repo) string {
+ if willBuild(r) {
+ return "yes"
+ }
+ return ""
+ })
+ col.Width = 5
+
+ col = tablePB.AddStringFunc("deb name", func(r *gitpb.Repo) string {
+ name := me.forge.Config.DebName(r.GetNamespace())
+ ver := me.forge.GetPackageVersion(r)
+ debname := name + "_" + ver + "_amd64.deb"
+ return debname
+ })
+ col.Width = 32
+
+ col = tablePB.AddState()
+ col.Width = 32
+
+ col = tablePB.AddStringFunc("end", func(r *gitpb.Repo) string {
+ return getStatusEnd(r)
+ })
+ col.Width = -1
+
+ tablePB.PrintTable()
+}
+
+func getStatusEnd(repo *gitpb.Repo) string {
+ var end string
+
+ manufactured := repo.GetCurrentVersion()
+ ver := trimNonNumericFromStart(manufactured)
+ name := me.forge.Config.DebName(repo.GetGoPath())
+ var realver string
+ if installedPackage := me.machine.FindInstalledByName(name); installedPackage != nil {
+ realver = installedPackage.Version
+ }
+ if actualp := me.machine.FindByVersion(name, ver); actualp != nil {
+ // end += " (version match) " + actualp.Version + " " + ver + " "
+ // repo.State = "on mirrors"
+ } else {
+ if realver != "" {
+ end += fmt.Sprintf(" (version miss) %s vs %s ", realver, ver)
+ }
+ // end += "" + ver + " "
+ }
+
+ debname := name + "_" + ver + "_amd64.deb"
+ // debnames[repo] = debname
+ outdir := getOutdir(repo)
+ _, err := os.Stat(filepath.Join(outdir, debname))
+ if err == nil {
+ // log.Info("exists", filepath.Join(outdir, debname))
+ repo.State = "in incoming"
+ } else {
+ // log.Info(debname, "does not exist")
+ }
+ if strings.HasPrefix(repo.GetState(), "unknown bran") {
+ end += " (will build) "
+ }
+
+ if repo.State == "" {
+ end += " (will build) "
+ }
+
+ if repo.State == "need to build" {
+ end += " (will build) "
+ }
+
+ if name == "" {
+ // err := fmt.Sprintf("name is blank error %+v", repo)
+ log.Warn("name is blank error", repo.GetGoPath())
+ }
+ return end
+}
+
+func willBuild(repo *gitpb.Repo) bool {
+ if strings.HasPrefix(repo.GetState(), "unknown bran") {
+ return true
+ }
+
+ if repo.State == "" {
+ return true
+ }
+
+ if repo.State == "need to build" {
+ return true
+ }
+
+ return false
+}