summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-11-29 11:08:11 -0600
committerJeff Carr <[email protected]>2024-11-29 11:08:11 -0600
commit28daefa6c53c0586baf773c2042e3a8bd5b68288 (patch)
tree731ad1c7eda9995e82199af99d3428c246b98acf /main.go
parent6e29eb786218374aff0de2b7c188e1a2faa9e28e (diff)
add argv
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'main.go')
-rw-r--r--main.go91
1 files changed, 57 insertions, 34 deletions
diff --git a/main.go b/main.go
index b2e0091..0de13f3 100644
--- a/main.go
+++ b/main.go
@@ -4,19 +4,43 @@ import (
"fmt"
"io"
"os"
+ "strings"
+
+ "github.com/alexflint/go-arg"
+ "go.wit.com/lib/gui/shell"
+ "go.wit.com/log"
)
+// sent via -ldflags
+var VERSION string
+var BUILDTIME string
func main() {
+ pp := arg.MustParse(&argv)
+
+ // for very new users or users unfamilar with the command line, this may help them
+ if argv.Base == "help" || argv.Base == "?" {
+ pp.WriteHelp(os.Stdout)
+ os.Exit(0)
+ }
+
+ cmd := []string{"go", "list", "-f", "'{{.Name}}'"}
+ result := shell.Run(cmd)
+
+ packageName := strings.Join(result.Stdout, "\n")
+ packageName = strings.TrimSpace(packageName)
+ packageName = strings.Trim(packageName, "'")
+ log.Info("packageName == ", packageName)
+
f, _ := os.OpenFile("test.sort.pb.go", os.O_WRONLY|os.O_CREATE, 0600)
sortmap := make(map[string]string)
- sortmap["package"] = "testautogen"
- sortmap["lock"] = "gitTagslock"
+ sortmap["package"] = packageName
+ sortmap["base"] = "gitTag"
+ sortmap["lock"] = sortmap["base"] + "slock"
sortmap["Base"] = "GitTag"
- sortmap["Bases"] = "GitTags"
+ sortmap["Bases"] = sortmap["Base"] + "s"
- sortmap["base"] = "gitTag"
sortmap["sortBy"] = "ByPath"
sortmap["sortKey"] = "Refname"
@@ -82,7 +106,7 @@ func iterTop(w io.Writer, names map[string]string) {
func iterNext(w io.Writer, names map[string]string) {
fmt.Fprintln(w, "// Next() returns the next thing in the array")
- fmt.Fprintln(w, "func (it *" + names["Base"] + "Iterator) Next() *" + names["Base"] + " {")
+ fmt.Fprintln(w, "func (it *"+names["Base"]+"Iterator) Next() *"+names["Base"]+" {")
fmt.Fprintln(w, " if it.packs[it.index-1] == nil {")
fmt.Fprintln(w, " for i, d := range it.packs {")
fmt.Fprintln(w, " fmt.Println(\"i =\", i, d)")
@@ -96,49 +120,48 @@ func iterNext(w io.Writer, names map[string]string) {
fmt.Fprintln(w, "")
}
-
func iterSort(w io.Writer, names map[string]string) {
- fmt.Fprintln(w, "func (all *" + names["Bases"] + ") All() *" + names["Base"] + "Iterator {")
- fmt.Fprintln(w, " " + names["base"] + "Pointers := all.selectAll" + names["Base"] + "()")
+ fmt.Fprintln(w, "func (all *"+names["Bases"]+") All() *"+names["Base"]+"Iterator {")
+ fmt.Fprintln(w, " "+names["base"]+"Pointers := all.selectAll"+names["Base"]+"()")
fmt.Fprintln(w, "")
- fmt.Fprintln(w, " iterator := New" + names["Base"] + "Iterator(" + names["base"] + "Pointers)")
+ fmt.Fprintln(w, " iterator := New"+names["Base"]+"Iterator("+names["base"]+"Pointers)")
fmt.Fprintln(w, " return iterator")
fmt.Fprintln(w, "}")
fmt.Fprintln(w, "")
- fmt.Fprintln(w, "func (all *" + names["Bases"] + ") Sort" + names["sortBy"] + "() *" + names["Base"] + "Iterator {")
- fmt.Fprintln(w, " packs := all.selectAll" + names["Base"] + "()")
+ fmt.Fprintln(w, "func (all *"+names["Bases"]+") Sort"+names["sortBy"]+"() *"+names["Base"]+"Iterator {")
+ fmt.Fprintln(w, " packs := all.selectAll"+names["Base"]+"()")
fmt.Fprintln(w, "")
- fmt.Fprintln(w, " sort.Sort(" + names["Base"] + "" + names["sortBy"] + "(packs))")
+ fmt.Fprintln(w, " sort.Sort("+names["Base"]+""+names["sortBy"]+"(packs))")
fmt.Fprintln(w, "")
- fmt.Fprintln(w, " iterator := New" + names["Base"] + "Iterator(packs)")
+ fmt.Fprintln(w, " iterator := New"+names["Base"]+"Iterator(packs)")
fmt.Fprintln(w, " return iterator")
fmt.Fprintln(w, "}")
fmt.Fprintln(w, "")
- fmt.Fprintln(w, "func (all *" + names["Bases"] + ") Len() int {")
- fmt.Fprintln(w, " " + names["lock"] + ".RLock()")
- fmt.Fprintln(w, " defer " + names["lock"] + ".RUnlock()")
+ fmt.Fprintln(w, "func (all *"+names["Bases"]+") Len() int {")
+ fmt.Fprintln(w, " "+names["lock"]+".RLock()")
+ fmt.Fprintln(w, " defer "+names["lock"]+".RUnlock()")
fmt.Fprintln(w, "")
- fmt.Fprintln(w, " return len(all." + names["Bases"] + ")")
+ fmt.Fprintln(w, " return len(all."+names["Bases"]+")")
fmt.Fprintln(w, "}")
fmt.Fprintln(w, "")
}
func iterEnd(w io.Writer, names map[string]string) {
- fmt.Fprintln(w, "type " + names["Base"] + "" + names["sortBy"] + " []*" + names["Base"] + "")
+ fmt.Fprintln(w, "type "+names["Base"]+""+names["sortBy"]+" []*"+names["Base"]+"")
fmt.Fprintln(w, "")
- fmt.Fprintln(w, "func (a " + names["Base"] + "" + names["sortBy"] + ") Len() int { return len(a) }")
- fmt.Fprintln(w, "func (a " + names["Base"] + "" + names["sortBy"] + ") Less(i, j int) bool { return a[i]." + names["sortKey"] + " < a[j]." + names["sortKey"] + " }")
- fmt.Fprintln(w, "func (a " + names["Base"] + "" + names["sortBy"] + ") Swap(i, j int) { a[i], a[j] = a[j], a[i] }")
+ fmt.Fprintln(w, "func (a "+names["Base"]+""+names["sortBy"]+") Len() int { return len(a) }")
+ fmt.Fprintln(w, "func (a "+names["Base"]+""+names["sortBy"]+") Less(i, j int) bool { return a[i]."+names["sortKey"]+" < a[j]."+names["sortKey"]+" }")
+ fmt.Fprintln(w, "func (a "+names["Base"]+""+names["sortBy"]+") Swap(i, j int) { a[i], a[j] = a[j], a[i] }")
fmt.Fprintln(w, "")
- fmt.Fprintln(w, "// safely returns a slice of pointers to the " + names["Base"] + " protobufs")
- fmt.Fprintln(w, "func (all *" + names["Bases"] + ") selectAll" + names["Base"] + "() []*" + names["Base"] + " {")
- fmt.Fprintln(w, " " + names["lock"] + ".RLock()")
- fmt.Fprintln(w, " defer " + names["lock"] + ".RUnlock()")
+ fmt.Fprintln(w, "// safely returns a slice of pointers to the "+names["Base"]+" protobufs")
+ fmt.Fprintln(w, "func (all *"+names["Bases"]+") selectAll"+names["Base"]+"() []*"+names["Base"]+" {")
+ fmt.Fprintln(w, " "+names["lock"]+".RLock()")
+ fmt.Fprintln(w, " defer "+names["lock"]+".RUnlock()")
fmt.Fprintln(w, "")
- fmt.Fprintln(w, " // Create a new slice to hold pointers to each " + names["Base"] + "")
- fmt.Fprintln(w, " var aStuff []*" + names["Base"] + "")
- fmt.Fprintln(w, " aStuff = make([]*" + names["Base"] + ", len(all." + names["Bases"] + "))")
- fmt.Fprintln(w, " for i, p := range all." + names["Bases"] + " {")
+ fmt.Fprintln(w, " // Create a new slice to hold pointers to each "+names["Base"]+"")
+ fmt.Fprintln(w, " var aStuff []*"+names["Base"]+"")
+ fmt.Fprintln(w, " aStuff = make([]*"+names["Base"]+", len(all."+names["Bases"]+"))")
+ fmt.Fprintln(w, " for i, p := range all."+names["Bases"]+" {")
fmt.Fprintln(w, " aStuff[i] = p // Copy pointers for safe iteration")
fmt.Fprintln(w, " }")
fmt.Fprintln(w, "")
@@ -149,17 +172,17 @@ func iterEnd(w io.Writer, names map[string]string) {
func iterAppend(w io.Writer, names map[string]string) {
fmt.Fprintln(w, "// enforces no duplicate Refname names")
- fmt.Fprintln(w, "func (all *" + names["Bases"] + ") Append(newP *" + names["Base"] + ") bool {")
- fmt.Fprintln(w, " " + names["lock"] + ".Lock()")
- fmt.Fprintln(w, " defer " + names["lock"] + ".Unlock()")
+ fmt.Fprintln(w, "func (all *"+names["Bases"]+") Append(newP *"+names["Base"]+") bool {")
+ fmt.Fprintln(w, " "+names["lock"]+".Lock()")
+ fmt.Fprintln(w, " defer "+names["lock"]+".Unlock()")
fmt.Fprintln(w, "")
- fmt.Fprintln(w, " for _, p := range all." + names["Bases"] + " {")
+ fmt.Fprintln(w, " for _, p := range all."+names["Bases"]+" {")
fmt.Fprintln(w, " if p.Refname == newP.Refname {")
fmt.Fprintln(w, " return false")
fmt.Fprintln(w, " }")
fmt.Fprintln(w, " }")
fmt.Fprintln(w, "")
- fmt.Fprintln(w, " all." + names["Bases"] + " = append(all." + names["Bases"] + ", newP)")
+ fmt.Fprintln(w, " all."+names["Bases"]+" = append(all."+names["Bases"]+", newP)")
fmt.Fprintln(w, " return true")
fmt.Fprintln(w, "}")
fmt.Fprintln(w, "")