diff options
| author | Jeff Carr <[email protected]> | 2024-12-05 12:29:47 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-12-05 12:29:47 -0600 |
| commit | 816760d1372d6d1922a9916f3150e49f3fd562cd (patch) | |
| tree | 0889b24fabb5d35dc0db53d0bbf71a985427c89b /doCobol.go | |
| parent | 0463030e80f480f0d38989f4231db8b1651b40bc (diff) | |
developing on this now
Diffstat (limited to 'doCobol.go')
| -rw-r--r-- | doCobol.go | 162 |
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 +} |
