summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--humanShowRepo.go92
-rw-r--r--humanTable.go160
2 files changed, 252 insertions, 0 deletions
diff --git a/humanShowRepo.go b/humanShowRepo.go
new file mode 100644
index 0000000..4b6e436
--- /dev/null
+++ b/humanShowRepo.go
@@ -0,0 +1,92 @@
+package forgepb
+
+import (
+ "os"
+ "path/filepath"
+ "time"
+
+ "go.wit.com/lib/gui/shell"
+ "go.wit.com/lib/protobuf/gitpb"
+ "go.wit.com/log"
+)
+
+func (f *Forge) HumanPrintRepo(check *gitpb.Repo) {
+ if check == nil {
+ log.Info("forge: you sent me nil")
+ return
+ }
+
+ if check.GetTargetVersion() == "" {
+ log.Info("TargetVersion == blank")
+ }
+ if check.GetTargetVersion() == check.GetCurrentVersion() {
+ log.Info("IsReleased() == true. do not release this a second time")
+ } else {
+ log.Info("IsReleased() == false")
+ }
+ if check.CheckDirty() {
+ log.Info("CheckDirty() == true. do not release dirty repos")
+ } else {
+ log.Info("CheckDirty() == false")
+ }
+ if check.GetGoPrimitive() {
+ log.Info("IsPrimitive() == true")
+ } else {
+ log.Info("IsPrimitive() == false")
+ }
+ if f.Config.IsPrivate(check.GetGoPath()) {
+ log.Info("IsPrivate() == true")
+ } else {
+ log.Info("IsPrivate() == false")
+ }
+ if ok, compiled, err := check.IsProtobuf(); ok {
+ log.Info(log.Sprint("IsProtobuf() == true compiled protobuf files = ", compiled))
+ if err != nil {
+ log.Info("IsProtobuf() ERROR = ", err)
+ }
+ for _, s := range compiled {
+ log.Info("\tcompiled file found:", s)
+ }
+ } else {
+ log.Info("IsProtobuf() == false")
+ if err != nil {
+ log.Info("IsProtobuf() ERROR = ", err)
+ }
+ }
+
+ // testNext(check)
+
+ found := new(gitpb.Repos)
+ found.AppendUniqueGoPath(check)
+ f.PrintHumanTable(found)
+
+ printTime("LastPull", check.Times.LastPull.AsTime())
+ printTime("LastUpdate", check.Times.LastUpdate.AsTime())
+ printTime("LastDirty", check.Times.LastDirty.AsTime())
+ printTime("dir mtime", check.Times.MtimeDir.AsTime())
+ printTime("HEAD mtime", check.Times.MtimeHead.AsTime())
+ printTime("Index mtime", check.Times.MtimeIndex.AsTime())
+ printTime("fetch", check.Times.MtimeFetch.AsTime())
+ printTime("last go.sum", check.Times.LastGoDep.AsTime())
+ printTime("last commit", check.Times.NewestCommit.AsTime())
+}
+
+func (f *Forge) testGoRepo(check *gitpb.Repo) {
+ data, _ := os.ReadFile(filepath.Join(check.FullPath, "go.mod"))
+ log.Info(string(data))
+
+ if f.FinalGoDepsCheckOk(check) {
+ log.Info("forge.FinalGoDepsCheck(check) worked!")
+ } else {
+ log.Info("forge.FinalGoDepsCheck(check) failed. boo.")
+ }
+
+}
+
+func printTime(s string, t time.Time) {
+ now := time.Now()
+ dur := now.Sub(t)
+ if dur < (time.Hour * 24) {
+ log.Printf("%s mtime last changed %s\n", s, shell.FormatDuration(dur))
+ }
+}
diff --git a/humanTable.go b/humanTable.go
new file mode 100644
index 0000000..f7a06b1
--- /dev/null
+++ b/humanTable.go
@@ -0,0 +1,160 @@
+package forgepb
+
+import (
+ "fmt"
+
+ "go.wit.com/lib/gui/shell"
+ "go.wit.com/lib/protobuf/gitpb"
+ "go.wit.com/log"
+)
+
+// you can replace all of COBOL with this amount of GO
+
+// ah yes, COBOL. what an ancient throwback. for those that know
+// then you know exactly what is in this file. For those that don't, here it is:
+
+// All this does is output human readable text formatted to be viewable on
+// a console with a fixed with font. AKA: a typerwriter. Which is exactly
+// what COBOL did in the 1970's (60s? notsure) And the 80s.
+
+// So, you want to dump out stuff on the console. Let's see. Something like
+
+/*
+ forge --favorites
+
+ go.wit.com/apps/myapp v0.2.0 (installed)
+ go.wit.com/lib/somethingfun v0.0.7 (not downloaded)
+*/
+
+// anyway, you get the idea. This is also called COBOL because it does on
+// thing and truncates every line output to the columns you see with stty -a
+// my monitor is huge, so it's not going to work at 80x24. 160x48 is better
+// actually, I'd predict some of these will probably end up 240 wide
+// long live good eyesight and 4K monitors!
+
+func (f *Forge) PrintHumanTable(allr *gitpb.Repos) {
+ log.DaemonMode(true)
+
+ // log.Info(standardStart5("gopath", "cur name", "master", "user", "repo type"))
+ log.Info(standardTable8("repopath", "cur br", "age", "target", "master", "devel", "user", "curver", "repo type"))
+ all := allr.SortByFullPath()
+ for all.Scan() {
+ repo := all.Next()
+ f.sendRepoToTable(repo)
+ }
+}
+
+func standardTable5(arg1, arg2, arg3, arg4, arg5 string) string {
+ len1 := 40
+ len2 := 12
+ len3 := 12
+ len4 := 16
+ len5 := 8
+ var s string
+ if len(arg1) > len1 {
+ arg1 = arg1[:len1]
+ }
+ s = "%-" + fmt.Sprintf("%d", len1) + "s "
+ if len(arg2) > len2 {
+ arg2 = arg2[:len2]
+ }
+ s += "%-" + fmt.Sprintf("%d", len2) + "s "
+ if len(arg3) > len3 {
+ arg3 = arg3[:len3]
+ }
+ s += "%-" + fmt.Sprintf("%d", len3) + "s "
+ if len(arg4) > len4 {
+ arg4 = arg4[:len4]
+ }
+ s += "%-" + fmt.Sprintf("%d", len4) + "s "
+ if len(arg5) > len5 {
+ arg5 = arg5[:len5]
+ }
+ s += "%-" + fmt.Sprintf("%d", len5) + "s"
+ return fmt.Sprintf(s, arg1, arg2, arg3, arg4, arg5)
+}
+
+func standardTable8(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 string) string {
+ len1 := 40
+ len2 := 12
+ len3 := 6
+ len4 := 12
+ len5 := 16
+ len6 := 16
+ len7 := 16
+ len8 := 16
+ len9 := 8
+ var s string
+ if len(arg1) > len1 {
+ arg1 = arg1[:len1]
+ }
+ s = "%-" + fmt.Sprintf("%d", len1) + "s "
+ if len(arg2) > len2 {
+ arg2 = arg2[:len2]
+ }
+ s += "%-" + fmt.Sprintf("%d", len2) + "s "
+ if len(arg3) > len3 {
+ arg3 = arg3[:len3]
+ }
+ s += "%-" + fmt.Sprintf("%d", len3) + "s "
+ if len(arg4) > len4 {
+ arg4 = arg4[:len4]
+ }
+ s += "%-" + fmt.Sprintf("%d", len4) + "s "
+
+ if len(arg5) > len5 {
+ arg5 = arg5[:len5]
+ }
+ s += "%-" + fmt.Sprintf("%d", len5) + "s "
+
+ if len(arg6) > len6 {
+ arg6 = arg6[:len6]
+ }
+ s += "%-" + fmt.Sprintf("%d", len6) + "s "
+
+ if len(arg7) > len7 {
+ arg7 = arg7[:len7]
+ }
+ s += "%-" + fmt.Sprintf("%d", len7) + "s "
+
+ if len(arg8) > len8 {
+ arg8 = arg8[:len8]
+ }
+ s += "%-" + fmt.Sprintf("%d", len8) + "s "
+
+ if len(arg9) > len9 {
+ arg9 = arg9[:len9]
+ }
+ s += "%-" + fmt.Sprintf("%d", len9) + "s "
+
+ return fmt.Sprintf(s, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
+}
+
+func (f *Forge) sendRepoToTable(repo *gitpb.Repo) {
+ var end string
+ if repo.IsDirty() {
+ end += "(dirty) "
+ }
+ var mhort string = repo.GetMasterVersion()
+ var dhort string = repo.GetDevelVersion()
+ var uhort string = repo.GetUserVersion()
+ var thort string = repo.GetTargetVersion()
+ var chort string = repo.GetCurrentBranchVersion()
+ var cname string = repo.GetCurrentBranchName()
+
+ var gopath string = repo.GetGoPath()
+ var rtype string = repo.GetRepoType()
+
+ age := shell.FormatDuration(repo.NewestAge())
+
+ start := standardTable8(gopath, cname, age, thort, mhort, dhort, uhort, chort, rtype)
+
+ if f.Config.IsReadOnly(repo.GetGoPath()) {
+ end += "(readonly) "
+ }
+ if repo.GetMasterBranchName() != "master" && repo.GetMasterBranchName() != "main" {
+ end += "(m:" + repo.GetMasterBranchName() + ") "
+ }
+
+ log.Info(start, end)
+}