summaryrefslogtreecommitdiff
path: root/doCobol.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-12-05 12:29:47 -0600
committerJeff Carr <[email protected]>2024-12-05 12:29:47 -0600
commit816760d1372d6d1922a9916f3150e49f3fd562cd (patch)
tree0889b24fabb5d35dc0db53d0bbf71a985427c89b /doCobol.go
parent0463030e80f480f0d38989f4231db8b1651b40bc (diff)
developing on this now
Diffstat (limited to 'doCobol.go')
-rw-r--r--doCobol.go162
1 files changed, 162 insertions, 0 deletions
diff --git a/doCobol.go b/doCobol.go
new file mode 100644
index 0000000..678d17a
--- /dev/null
+++ b/doCobol.go
@@ -0,0 +1,162 @@
+package main
+
+import (
+ "fmt"
+ "os"
+
+ "go.wit.com/lib/protobuf/gitpb"
+ "go.wit.com/log"
+)
+
+// ah yes, COBOL. what a 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 doCobol() {
+ log.DaemonMode(true)
+
+ log.Info(standardStart5("gopath", "cur name", "master", "user", "repo type"))
+ repos := me.found.SortByGoPath()
+ for repos.Scan() {
+ repo := repos.Next()
+ verifyPrint(repo)
+ }
+}
+
+func standardStart5(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 verifyPrint(repo *gitpb.Repo) {
+ var end string
+ if repo.CheckDirty() {
+ end += "(dirty) "
+ }
+ s := make(map[string]string)
+ if !verify(repo, s) {
+ log.Info("going to delete", repo.GoPath)
+ if argv.Fix {
+ me.forge.Repos.DeleteByGoPath(repo.GetGoPath())
+ me.forge.Repos.ConfigSave()
+ } else {
+ log.Info("need argv --real to delete", repo.GoPath)
+ os.Exit(0)
+ }
+ }
+ if me.forge.Config.IsReadOnly(repo.GoPath) && !argv.FindReadOnly {
+ if repo.ReadOnly {
+ return
+ }
+ log.Info("readonly flag on repo is wrong", repo.GoPath)
+ return
+ }
+
+ var mhort string = s["mver"]
+ var uhort string = s["uver"]
+ var cname string = s["cname"]
+
+ // start := fmt.Sprintf("%-40s %-12s %-12s %-12s %-8s", s["gopath"], cname, mhort, uhort, s["rtype"])
+ start := standardStart5(s["gopath"], cname, mhort, uhort, s["rtype"])
+
+ if me.forge.Config.IsReadOnly(repo.GoPath) {
+ end += "(readonly) "
+ }
+
+ log.Info(start, end)
+}
+
+func verify(repo *gitpb.Repo, s map[string]string) bool {
+ if !repo.IsValid() {
+ return false
+ }
+ s["gopath"] = repo.GetGoPath()
+ s["rtype"] = repo.RepoType()
+
+ s["mname"] = repo.GetMasterBranchName()
+ if s["mname"] == "" {
+ log.Info("verify() no master branch name", repo.GoPath)
+ s["mver"] = repo.GetMasterVersion()
+ return false
+ }
+ // only verify the master branch name with read-only repos
+ if me.forge.Config.IsReadOnly(repo.GoPath) {
+ s["mver"] = repo.GetMasterVersion()
+ return true
+ }
+
+ s["dname"] = repo.GetDevelBranchName()
+ if s["dname"] == "" {
+ log.Info("verify() no devel branch name", repo.GoPath)
+ return false
+ }
+ s["uname"] = repo.GetUserBranchName()
+ if s["uname"] == "" {
+ log.Info("verify() no user branch name", repo.GoPath)
+ return false
+ }
+ s["cname"] = repo.GetCurrentBranchName()
+
+ s["mver"] = repo.GetMasterVersion()
+ if s["mver"] == "" {
+ log.Info("verify() no master branch name", repo.GoPath, repo.GetMasterBranchName())
+ return false
+ }
+ s["dver"] = repo.GetDevelVersion()
+ if s["dver"] == "" {
+ log.Info("verify() no devel branch name", repo.GoPath, repo.GetDevelBranchName())
+ return false
+ }
+ s["uver"] = repo.GetUserVersion()
+ if s["uver"] == "" {
+ log.Info("verify() no user branch name", repo.GoPath, repo.GetUserBranchName())
+ return false
+ }
+ s["cver"] = repo.GetCurrentBranchVersion()
+ s["url"] = repo.URL
+
+ return true
+}