func main() { args, min := filter(os.Args[1:], "-version") if !version.AtLeast(min) { fmt.Printf("protoc version not high enough to parse this proto file\n") return } gen := exec.Command("protoc", args...) out, err := gen.CombinedOutput() if err != nil { fmt.Printf("%s\n", string(out)) panic(err) } }
func main() { flag.String("version", "2.3.0", "minimum protoc version") flag.Bool("default", true, "generate the case where everything is false") flags, args := filterArgs(os.Args[1:]) var min string flags, min = filter(flags, "-version") if len(min) == 0 { min = "2.3.1" } if !version.AtLeast(min) { fmt.Printf("protoc version not high enough to parse this proto file\n") return } if len(args) != 1 { fmt.Printf("protoc-gen-combo expects a filename\n") os.Exit(1) } filename := args[0] var def string flags, def = filter(flags, "-default") if _, err := exec.LookPath("protoc"); err != nil { panic("cannot find protoc in PATH") } m := MixMatch{ Old: []string{ "option (gogoproto.unmarshaler_all) = false;", "option (gogoproto.marshaler_all) = false;", "option (gogoproto.unsafe_unmarshaler_all) = false;", "option (gogoproto.unsafe_marshaler_all) = false;", }, Filename: filename, Args: flags, } if def != "false" { m.Gen("./combos/neither/", []string{ "option (gogoproto.unmarshaler_all) = false;", "option (gogoproto.marshaler_all) = false;", "option (gogoproto.unsafe_unmarshaler_all) = false;", "option (gogoproto.unsafe_marshaler_all) = false;", }) } m.Gen("./combos/marshaler/", []string{ "option (gogoproto.unmarshaler_all) = false;", "option (gogoproto.marshaler_all) = true;", "option (gogoproto.unsafe_unmarshaler_all) = false;", "option (gogoproto.unsafe_marshaler_all) = false;", }) m.Gen("./combos/unmarshaler/", []string{ "option (gogoproto.unmarshaler_all) = true;", "option (gogoproto.marshaler_all) = false;", "option (gogoproto.unsafe_unmarshaler_all) = false;", "option (gogoproto.unsafe_marshaler_all) = false;", }) m.Gen("./combos/both/", []string{ "option (gogoproto.unmarshaler_all) = true;", "option (gogoproto.marshaler_all) = true;", "option (gogoproto.unsafe_unmarshaler_all) = false;", "option (gogoproto.unsafe_marshaler_all) = false;", }) m.Gen("./combos/unsafemarshaler/", []string{ "option (gogoproto.unmarshaler_all) = false;", "option (gogoproto.marshaler_all) = false;", "option (gogoproto.unsafe_unmarshaler_all) = false;", "option (gogoproto.unsafe_marshaler_all) = true;", }) m.Gen("./combos/unsafeunmarshaler/", []string{ "option (gogoproto.unmarshaler_all) = false;", "option (gogoproto.marshaler_all) = false;", "option (gogoproto.unsafe_unmarshaler_all) = true;", "option (gogoproto.unsafe_marshaler_all) = false;", }) m.Gen("./combos/unsafeboth/", []string{ "option (gogoproto.unmarshaler_all) = false;", "option (gogoproto.marshaler_all) = false;", "option (gogoproto.unsafe_unmarshaler_all) = true;", "option (gogoproto.unsafe_marshaler_all) = true;", }) }