diff options
| author | Jeff Carr <[email protected]> | 2024-11-29 12:35:12 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-11-29 12:35:12 -0600 |
| commit | 7a1b9608581ad4f2169198be1cbd30093beaa5b3 (patch) | |
| tree | 93d0c718c8f62ab13658bfd399e8876c63d6bc1e | |
| parent | 45b343bee8b1b38ad89899f31624613925bb408e (diff) | |
marshal argv options
Signed-off-by: Jeff Carr <[email protected]>
| -rw-r--r-- | argv.go | 12 | ||||
| -rw-r--r-- | main.go | 8 | ||||
| -rw-r--r-- | marshal.go | 30 | ||||
| -rw-r--r-- | testautogen/Makefile | 2 |
4 files changed, 32 insertions, 20 deletions
@@ -9,11 +9,13 @@ package main var argv args type args struct { - LoBase string `arg:"--lobase" help:"lowercase basename"` - UpBase string `arg:"--upbase" help:"uppercase basename"` - Proto string `arg:"--proto" help:"the .proto filename"` - Sort []string `arg:"--sort" help:"how and what to sort on"` - DryRun bool `arg:"--dry-run" help:"show what would be run"` + LoBase string `arg:"--lobase" help:"lowercase basename"` + UpBase string `arg:"--upbase" help:"uppercase basename"` + Proto string `arg:"--proto" help:"the .proto filename"` + Sort []string `arg:"--sort" help:"how and what to sort on"` + Marshal []string `arg:"--marshal" help:"what to marshal on"` + NoMarshal bool `arg:"--no-marshal" help:"do not make a marshal.pb.go file"` + DryRun bool `arg:"--dry-run" help:"show what would be run"` } func (a args) Description() string { @@ -81,8 +81,12 @@ func main() { iterAppend(f, sortmap) iterEnd(f, sortmap) - // make the foo.marshal.pb.go file - marshal(sortmap) + if argv.NoMarshal { + log.Info("not making marshal.pb.go file (--no-marshal == true)") + } else { + // make the foo.marshal.pb.go file + marshal(sortmap) + } } func headerComment(w io.Writer) { @@ -28,8 +28,14 @@ func marshal(names map[string]string) { fmt.Fprintln(w, ")") fmt.Fprintln(w, "") - marshalThing(w, names["Base"]) - marshalThing(w, names["Bases"]) + if len(argv.Marshal) == 0 { + marshalThing(w, names["Base"]) + marshalThing(w, names["Bases"]) + } else { + for _, v := range argv.Marshal { + marshalThing(w, v) + } + } } func marshalThing(w io.Writer, thing string) { @@ -38,29 +44,29 @@ func marshalThing(w io.Writer, thing string) { fmt.Fprintln(w, " return protojson.Format(r)") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") - fmt.Fprintln(w, "// apparently this isn't stable") - fmt.Fprintln(w, "// https://protobuf.dev/reference/go/faq/#unstable-text") - fmt.Fprintln(w, "// but it's so awesome I'm using it by default to try to fix the problems with it") - fmt.Fprintln(w, "func (r *"+thing+") FormatTEXT() string {") - fmt.Fprintln(w, " return prototext.Format(r)") - fmt.Fprintln(w, "}") - fmt.Fprintln(w, "") fmt.Fprintln(w, "// marshal json") fmt.Fprintln(w, "func (r *"+thing+") MarshalJSON() ([]byte, error) {") fmt.Fprintln(w, " return protojson.Marshal(r)") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") - fmt.Fprintln(w, "// unmarshal") + fmt.Fprintln(w, "// unmarshal json") fmt.Fprintln(w, "func (r *"+thing+") UnmarshalJSON(data []byte) error {") fmt.Fprintln(w, " return protojson.Unmarshal(data, r)") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") - fmt.Fprintln(w, "// marshal to wire") + fmt.Fprintln(w, "// apparently this isn't stable, but it's awesomely better") + fmt.Fprintln(w, "// https://protobuf.dev/reference/go/faq/#unstable-text") + fmt.Fprintln(w, "// it's so great for config files, I'm using it by default to try to fix the problems with it") + fmt.Fprintln(w, "func (r *"+thing+") FormatTEXT() string {") + fmt.Fprintln(w, " return prototext.Format(r)") + fmt.Fprintln(w, "}") + fmt.Fprintln(w, "") + fmt.Fprintln(w, "// marshal to wire. This is called winning.") fmt.Fprintln(w, "func (r *"+thing+") Marshal() ([]byte, error) {") fmt.Fprintln(w, " return proto.Marshal(r)") fmt.Fprintln(w, "}") fmt.Fprintln(w, "") - fmt.Fprintln(w, "// unmarshal from wire") + fmt.Fprintln(w, "// unmarshal from wire. You have won.") fmt.Fprintln(w, "func (r *"+thing+") Unmarshal(data []byte) error {") fmt.Fprintln(w, " return proto.Unmarshal(data, r)") fmt.Fprintln(w, "}") diff --git a/testautogen/Makefile b/testautogen/Makefile index 576ea95..b0557a9 100644 --- a/testautogen/Makefile +++ b/testautogen/Makefile @@ -6,7 +6,7 @@ test: vet all: clean test.pb.go run vet run: - ../autogenpb --proto test.proto --lobase gitTag --upbase GitTag --sort "ByPath,Refname" + ../autogenpb --proto test.proto --lobase gitTag --upbase GitTag --sort "ByPath,Refname" --marshal GitTags vet: @GO111MODULE=off go vet |
