From 7a1b9608581ad4f2169198be1cbd30093beaa5b3 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Fri, 29 Nov 2024 12:35:12 -0600 Subject: [PATCH] marshal argv options Signed-off-by: Jeff Carr --- argv.go | 12 +++++++----- main.go | 8 ++++++-- marshal.go | 30 ++++++++++++++++++------------ testautogen/Makefile | 2 +- 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/argv.go b/argv.go index 50ac4d9..fd9f766 100644 --- a/argv.go +++ b/argv.go @@ -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 { diff --git a/main.go b/main.go index ddd39f8..0763542 100644 --- a/main.go +++ b/main.go @@ -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) { diff --git a/marshal.go b/marshal.go index 07042f0..3ed41ff 100644 --- a/marshal.go +++ b/marshal.go @@ -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