summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.go21
-rw-r--r--sort.go31
2 files changed, 40 insertions, 12 deletions
diff --git a/main.go b/main.go
index 0ed518d..de1b12d 100644
--- a/main.go
+++ b/main.go
@@ -106,6 +106,18 @@ func main() {
log.Info("protoc build error:", err)
os.Exit(-1)
}
+
+ // experiment to add a mutex to the structs.
+ // this might fix my other not so great lock implementation on sort (?)
+ // not sure though because I haven't tried it. leave it here until
+ // I can test it
+ if err := addMutex(sortmap); err == nil {
+ log.Info("adding mutex to existing protoc-gen-go file worked")
+ sortmap["mutex"] = "true"
+ } else {
+ log.Info("adding mutex to existing protoc-gen-go file did not work")
+ sortmap["mutex"] = "false"
+ }
}
// if foo.pb.go still doesn't exist, protoc failed
@@ -115,15 +127,6 @@ func main() {
badExit(errors.New("failed to be created with protoc and proto-gen-go"))
}
- // add mutex
- if err := addMutex(sortmap); err == nil {
- log.Info("adding mutex to existing protoc-gen-go file worked")
- sortmap["mutex"] = "true"
- } else {
- log.Info("adding mutex to existing protoc-gen-go file did not work")
- sortmap["mutex"] = "false"
- }
-
if argv.NoSort {
log.Info("not making sort.pb.go file (--no-sort == true)")
} else {
diff --git a/sort.go b/sort.go
index 56b2fdd..12e1181 100644
--- a/sort.go
+++ b/sort.go
@@ -58,11 +58,18 @@ func makeSortfile() {
func headerComment(w io.Writer) {
fmt.Fprintln(w, "")
- fmt.Fprintln(w, "// this file was autogenerated with autogenpb")
+ fmt.Fprintln(w, "// This file was autogenerated with autogenpb.")
+ fmt.Fprintln(w, "// go install go.wit.com/apps/autogenpb@latest")
fmt.Fprintln(w, "//")
- fmt.Fprintln(w, "// you might be able to use it on simple, strictly defined protobuf files")
+ fmt.Fprintln(w, "// You can use it on simple protobuf files")
+ fmt.Fprintln(w, "// The .proto file must have a singular and plural form of a message")
+ fmt.Fprintln(w, "// (for those of you that know ruby on rails, it's like that)")
+ fmt.Fprintln(w, "//")
+ fmt.Fprintln(w, "// You can mark which repos you want to auto generate sort.pb.go and marshal.pb.go files for")
+ fmt.Fprintln(w, "//")
+ fmt.Fprintln(w, "// For an example,")
+ fmt.Fprintln(w, "// go-clone go.wit.com/lib/protobuf/gitpb")
fmt.Fprintln(w, "//")
- fmt.Fprintln(w, "// go install go.wit.com/apps/autogenpb@latest")
fmt.Fprintln(w, "")
}
@@ -238,6 +245,24 @@ func iterReplace(w io.Writer, names map[string]string) {
}
func iterDelete(w io.Writer, names map[string]string) {
+ fmt.Fprintln(w, "func (all *"+names["Bases"]+") DeleteBy"+names["append"]+"(s string) bool {")
+ fmt.Fprintln(w, " "+names["lock"]+".Lock()")
+ fmt.Fprintln(w, " defer "+names["lock"]+".Unlock()")
+ fmt.Fprintln(w, "")
+ fmt.Fprintln(w, " for i, _ := range all."+names["Bases"]+" {")
+ fmt.Fprintln(w, " if all."+names["Bases"]+"[i]."+names["append"]+" == s {")
+ fmt.Fprintln(w, " all."+names["Bases"]+"[i] = all."+names["Bases"]+"[len(all."+names["Bases"]+")-1]")
+ fmt.Fprintln(w, " all."+names["Bases"]+" = all."+names["Bases"]+"[:len(all."+names["Bases"]+")-1]")
+ fmt.Fprintln(w, " return true")
+ fmt.Fprintln(w, " }")
+ fmt.Fprintln(w, " }")
+ fmt.Fprintln(w, " return false")
+ fmt.Fprintln(w, "}")
+ fmt.Fprintln(w, "")
+}
+
+// this tries to return the deleted one but is wrong/gives warning if mutex lock is in struct
+func iterDeleteWithCopy(w io.Writer, names map[string]string) {
fmt.Fprintln(w, "func (all *"+names["Bases"]+") DeleteBy"+names["append"]+"(s string) *"+names["Base"]+" {")
fmt.Fprintln(w, " "+names["lock"]+".Lock()")
fmt.Fprintln(w, " defer "+names["lock"]+".Unlock()")