diff --git a/_examples/01_minimum/federation/federation_grpc_federation.pb.go b/_examples/01_minimum/federation/federation_grpc_federation.pb.go index 1dbc1b0a..43e96bc2 100644 --- a/_examples/01_minimum/federation/federation_grpc_federation.pb.go +++ b/_examples/01_minimum/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/02_simple/federation/federation_grpc_federation.pb.go b/_examples/02_simple/federation/federation_grpc_federation.pb.go index 073bb344..4337cef8 100644 --- a/_examples/02_simple/federation/federation_grpc_federation.pb.go +++ b/_examples/02_simple/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/03_custom_resolver/federation/federation_grpc_federation.pb.go b/_examples/03_custom_resolver/federation/federation_grpc_federation.pb.go index 0bc08180..a88d14a6 100644 --- a/_examples/03_custom_resolver/federation/federation_grpc_federation.pb.go +++ b/_examples/03_custom_resolver/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/03_custom_resolver/federation/other_grpc_federation.pb.go b/_examples/03_custom_resolver/federation/other_grpc_federation.pb.go index dc89d1c3..08f47858 100644 --- a/_examples/03_custom_resolver/federation/other_grpc_federation.pb.go +++ b/_examples/03_custom_resolver/federation/other_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/other.proto package federation diff --git a/_examples/04_timeout/federation/federation_grpc_federation.pb.go b/_examples/04_timeout/federation/federation_grpc_federation.pb.go index 0b04ac2d..2708f95c 100644 --- a/_examples/04_timeout/federation/federation_grpc_federation.pb.go +++ b/_examples/04_timeout/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/05_async/federation/federation_grpc_federation.pb.go b/_examples/05_async/federation/federation_grpc_federation.pb.go index a9d2b331..c5f309b0 100644 --- a/_examples/05_async/federation/federation_grpc_federation.pb.go +++ b/_examples/05_async/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/06_alias/federation/federation_grpc_federation.pb.go b/_examples/06_alias/federation/federation_grpc_federation.pb.go index d37c36a7..3cd71e86 100644 --- a/_examples/06_alias/federation/federation_grpc_federation.pb.go +++ b/_examples/06_alias/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/07_autobind/federation/federation_grpc_federation.pb.go b/_examples/07_autobind/federation/federation_grpc_federation.pb.go index 3bf5b371..f99d7a29 100644 --- a/_examples/07_autobind/federation/federation_grpc_federation.pb.go +++ b/_examples/07_autobind/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/08_literal/federation/federation_grpc_federation.pb.go b/_examples/08_literal/federation/federation_grpc_federation.pb.go index e8868d13..1e6d5f2c 100644 --- a/_examples/08_literal/federation/federation_grpc_federation.pb.go +++ b/_examples/08_literal/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/09_multi_user/federation/federation_grpc_federation.pb.go b/_examples/09_multi_user/federation/federation_grpc_federation.pb.go index 4efd2a9e..d4a8ee35 100644 --- a/_examples/09_multi_user/federation/federation_grpc_federation.pb.go +++ b/_examples/09_multi_user/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/10_oneof/federation/federation_grpc_federation.pb.go b/_examples/10_oneof/federation/federation_grpc_federation.pb.go index 4722ceb7..2b85d3a5 100644 --- a/_examples/10_oneof/federation/federation_grpc_federation.pb.go +++ b/_examples/10_oneof/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/11_multi_service/federation/federation_grpc_federation.pb.go b/_examples/11_multi_service/federation/federation_grpc_federation.pb.go index caa29e3d..7af7e592 100644 --- a/_examples/11_multi_service/federation/federation_grpc_federation.pb.go +++ b/_examples/11_multi_service/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/11_multi_service/federation/other_grpc_federation.pb.go b/_examples/11_multi_service/federation/other_grpc_federation.pb.go index 7bd2218b..805d015e 100644 --- a/_examples/11_multi_service/federation/other_grpc_federation.pb.go +++ b/_examples/11_multi_service/federation/other_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/other.proto package federation diff --git a/_examples/11_multi_service/federation/reaction_grpc_federation.pb.go b/_examples/11_multi_service/federation/reaction_grpc_federation.pb.go index 1400f967..04c30e56 100644 --- a/_examples/11_multi_service/federation/reaction_grpc_federation.pb.go +++ b/_examples/11_multi_service/federation/reaction_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/reaction.proto package federation diff --git a/_examples/12_validation/federation/federation_grpc_federation.pb.go b/_examples/12_validation/federation/federation_grpc_federation.pb.go index 640ebd90..5d5b67f6 100644 --- a/_examples/12_validation/federation/federation_grpc_federation.pb.go +++ b/_examples/12_validation/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/13_map/federation/federation_grpc_federation.pb.go b/_examples/13_map/federation/federation_grpc_federation.pb.go index 670c6f97..ea6f24d0 100644 --- a/_examples/13_map/federation/federation_grpc_federation.pb.go +++ b/_examples/13_map/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/14_condition/federation/federation_grpc_federation.pb.go b/_examples/14_condition/federation/federation_grpc_federation.pb.go index 55b0f330..1f8a8081 100644 --- a/_examples/14_condition/federation/federation_grpc_federation.pb.go +++ b/_examples/14_condition/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/15_cel_plugin/federation/federation_grpc_federation.pb.go b/_examples/15_cel_plugin/federation/federation_grpc_federation.pb.go index 3933672f..fb68531c 100644 --- a/_examples/15_cel_plugin/federation/federation_grpc_federation.pb.go +++ b/_examples/15_cel_plugin/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/15_cel_plugin/plugin/plugin_grpc_federation.pb.go b/_examples/15_cel_plugin/plugin/plugin_grpc_federation.pb.go index 8200b333..c745f6b9 100644 --- a/_examples/15_cel_plugin/plugin/plugin_grpc_federation.pb.go +++ b/_examples/15_cel_plugin/plugin/plugin_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: plugin/plugin.proto package pluginpb @@ -47,7 +47,7 @@ func RegisterRegexpPlugin(plug RegexpPlugin) { if content == "version\n" { b, _ := grpcfed.EncodeCELPluginVersion(grpcfed.CELPluginVersionSchema{ ProtocolVersion: grpcfed.CELPluginProtocolVersion, - FederationVersion: "dev", + FederationVersion: "(devel)", Functions: []string{ "example_regexp_compile_string_example_regexp_Regexp", "example_regexp_newExample_example_regexp_Example", diff --git a/_examples/16_code_gen_plugin/federation/federation_grpc_federation.pb.go b/_examples/16_code_gen_plugin/federation/federation_grpc_federation.pb.go index deb46548..b6b4a556 100644 --- a/_examples/16_code_gen_plugin/federation/federation_grpc_federation.pb.go +++ b/_examples/16_code_gen_plugin/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/17_error_handler/federation/federation_grpc_federation.pb.go b/_examples/17_error_handler/federation/federation_grpc_federation.pb.go index db148168..47eb66c9 100644 --- a/_examples/17_error_handler/federation/federation_grpc_federation.pb.go +++ b/_examples/17_error_handler/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/18_load/federation/federation_grpc_federation.pb.go b/_examples/18_load/federation/federation_grpc_federation.pb.go index 76dfd6c4..dd509bb8 100644 --- a/_examples/18_load/federation/federation_grpc_federation.pb.go +++ b/_examples/18_load/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/_examples/18_load/plugin/plugin_grpc_federation.pb.go b/_examples/18_load/plugin/plugin_grpc_federation.pb.go index c3da0c46..d118e260 100644 --- a/_examples/18_load/plugin/plugin_grpc_federation.pb.go +++ b/_examples/18_load/plugin/plugin_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: plugin/plugin.proto package pluginpb @@ -42,7 +42,7 @@ func RegisterAccountPlugin(plug AccountPlugin) { if content == "version\n" { b, _ := grpcfed.EncodeCELPluginVersion(grpcfed.CELPluginVersionSchema{ ProtocolVersion: grpcfed.CELPluginProtocolVersion, - FederationVersion: "dev", + FederationVersion: "(devel)", Functions: []string{ "example_account_get_id_string", "example_account_get_id_string_string", diff --git a/_examples/19_retry/federation/federation_grpc_federation.pb.go b/_examples/19_retry/federation/federation_grpc_federation.pb.go index 11a8d107..071a9c1a 100644 --- a/_examples/19_retry/federation/federation_grpc_federation.pb.go +++ b/_examples/19_retry/federation/federation_grpc_federation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: federation/federation.proto package federation diff --git a/cmd/protoc-gen-grpc-federation/main.go b/cmd/protoc-gen-grpc-federation/main.go index 9f8a7e08..445df54a 100644 --- a/cmd/protoc-gen-grpc-federation/main.go +++ b/cmd/protoc-gen-grpc-federation/main.go @@ -2,17 +2,38 @@ package main import ( "context" + "fmt" "io" "log" "os" + "github.com/jessevdk/go-flags" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/pluginpb" "github.com/mercari/grpc-federation/generator" + grpcfed "github.com/mercari/grpc-federation/grpc/federation" +) + +type option struct { + Version bool `description:"show the version" long:"version" short:"v"` +} + +const ( + exitOK = 0 + exitERR = 1 ) func main() { + _, opt, err := parseOpt() + if err != nil { + // output error message to stderr by library + os.Exit(exitOK) + } + if opt.Version { + fmt.Fprintln(os.Stdout, grpcfed.Version) + return + } if err := _main(); err != nil { log.Fatal(err) } @@ -59,3 +80,13 @@ func outputResponse(resp *pluginpb.CodeGeneratorResponse) error { } return nil } + +func parseOpt() ([]string, *option, error) { + var opt option + parser := flags.NewParser(&opt, flags.Default) + args, err := parser.Parse() + if err != nil { + return nil, nil, err + } + return args, &opt, nil +} diff --git a/generator/testdata/expected_alias.go b/generator/testdata/expected_alias.go index c7185ec6..43e87b1b 100644 --- a/generator/testdata/expected_alias.go +++ b/generator/testdata/expected_alias.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: alias.proto package federation diff --git a/generator/testdata/expected_async.go b/generator/testdata/expected_async.go index d5f57dd7..154dbf9e 100644 --- a/generator/testdata/expected_async.go +++ b/generator/testdata/expected_async.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: async.proto package federation diff --git a/generator/testdata/expected_autobind.go b/generator/testdata/expected_autobind.go index 111be14d..d94f9c2c 100644 --- a/generator/testdata/expected_autobind.go +++ b/generator/testdata/expected_autobind.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: autobind.proto package federation diff --git a/generator/testdata/expected_condition.go b/generator/testdata/expected_condition.go index dc22b3e6..c87acfa1 100644 --- a/generator/testdata/expected_condition.go +++ b/generator/testdata/expected_condition.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: condition.proto package federation diff --git a/generator/testdata/expected_create_post.go b/generator/testdata/expected_create_post.go index 0d18badb..4162dde6 100644 --- a/generator/testdata/expected_create_post.go +++ b/generator/testdata/expected_create_post.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: create_post.proto package federation diff --git a/generator/testdata/expected_custom_resolver.go b/generator/testdata/expected_custom_resolver.go index 9a1ec661..8f8dd1ca 100644 --- a/generator/testdata/expected_custom_resolver.go +++ b/generator/testdata/expected_custom_resolver.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: custom_resolver.proto package federation diff --git a/generator/testdata/expected_error_handler.go b/generator/testdata/expected_error_handler.go index 4ae3963d..87b41989 100644 --- a/generator/testdata/expected_error_handler.go +++ b/generator/testdata/expected_error_handler.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: error_handler.proto package federation diff --git a/generator/testdata/expected_inline_env.go b/generator/testdata/expected_inline_env.go index ec23dfc5..2e63fb3b 100644 --- a/generator/testdata/expected_inline_env.go +++ b/generator/testdata/expected_inline_env.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: inline_env.proto package federation diff --git a/generator/testdata/expected_map.go b/generator/testdata/expected_map.go index b2ba22c9..be38b3f6 100644 --- a/generator/testdata/expected_map.go +++ b/generator/testdata/expected_map.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: map.proto package federation diff --git a/generator/testdata/expected_minimum.go b/generator/testdata/expected_minimum.go index 9e91a423..b9f7aded 100644 --- a/generator/testdata/expected_minimum.go +++ b/generator/testdata/expected_minimum.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: minimum.proto package federation diff --git a/generator/testdata/expected_multi_user.go b/generator/testdata/expected_multi_user.go index 80bc99d8..6c05bb73 100644 --- a/generator/testdata/expected_multi_user.go +++ b/generator/testdata/expected_multi_user.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: multi_user.proto package federation diff --git a/generator/testdata/expected_oneof.go b/generator/testdata/expected_oneof.go index dc310912..a398dc05 100644 --- a/generator/testdata/expected_oneof.go +++ b/generator/testdata/expected_oneof.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: oneof.proto package federation diff --git a/generator/testdata/expected_ref_env.go b/generator/testdata/expected_ref_env.go index f0169dbf..9d763f6f 100644 --- a/generator/testdata/expected_ref_env.go +++ b/generator/testdata/expected_ref_env.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: ref_env.proto package federation diff --git a/generator/testdata/expected_resolver_overlaps.go b/generator/testdata/expected_resolver_overlaps.go index f2bce9a1..807f0870 100644 --- a/generator/testdata/expected_resolver_overlaps.go +++ b/generator/testdata/expected_resolver_overlaps.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: resolver_overlaps.proto package federation diff --git a/generator/testdata/expected_simple_aggregation.go b/generator/testdata/expected_simple_aggregation.go index ac7a9b34..0a1f91b6 100644 --- a/generator/testdata/expected_simple_aggregation.go +++ b/generator/testdata/expected_simple_aggregation.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: simple_aggregation.proto package federation diff --git a/generator/testdata/expected_validation.go b/generator/testdata/expected_validation.go index 71165c2c..9b1480a4 100644 --- a/generator/testdata/expected_validation.go +++ b/generator/testdata/expected_validation.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-grpc-federation. DO NOT EDIT! // versions: // -// protoc-gen-grpc-federation: dev +// protoc-gen-grpc-federation: (devel) // // source: validation.proto package federation diff --git a/grpc/federation/version.go b/grpc/federation/version.go index 49aa9928..d4f40b9c 100644 --- a/grpc/federation/version.go +++ b/grpc/federation/version.go @@ -1,6 +1,8 @@ package federation import ( + "runtime/debug" + "github.com/mercari/grpc-federation/grpc/federation/cel" ) @@ -8,4 +10,21 @@ const CELPluginProtocolVersion = cel.PluginProtocolVersion type CELPluginVersionSchema = cel.PluginVersionSchema -var Version string = "dev" +const devVersion = "(devel)" + +var Version string + +func init() { + if Version != "" { + // set by go build with ldflags. + return + } + + if buildInfo, ok := debug.ReadBuildInfo(); ok { + // set by go install. + Version = buildInfo.Main.Version + } + if Version == "" { + Version = devVersion + } +} diff --git a/grpc/federation/version_test.go b/grpc/federation/version_test.go new file mode 100644 index 00000000..4f28dfd2 --- /dev/null +++ b/grpc/federation/version_test.go @@ -0,0 +1,22 @@ +package federation_test + +import ( + "runtime/debug" + "testing" + + grpcfed "github.com/mercari/grpc-federation/grpc/federation" +) + +func TestVersion(t *testing.T) { + if buildInfo, ok := debug.ReadBuildInfo(); ok { + if buildInfo.Main.Version != "" { + if grpcfed.Version != buildInfo.Main.Version { + t.Fatalf("expected version is %s but got %s", buildInfo.Main.Version, grpcfed.Version) + } + return + } + if grpcfed.Version != "(devel)" { + t.Fatalf("failed to get default version information: %s", grpcfed.Version) + } + } +}