feat(buildGo): Add support for gRPC packages
Introduces buildGo.grpc which is like buildGo.proto, but adds dependencies on the gRPC libraries.
This commit is contained in:
parent
d3e8774a8e
commit
9280cf9715
1 changed files with 8 additions and 5 deletions
13
buildGo.nix
13
buildGo.nix
|
@ -72,17 +72,20 @@ let
|
|||
'') // { goDeps = uniqueDeps; };
|
||||
|
||||
# Build a Go library out of the specified protobuf definition.
|
||||
proto = { name, proto, path ? name, protocFlags ? "", extraDeps ? [] }: package {
|
||||
proto = { name, proto, path ? name, extraDeps ? [] }: package {
|
||||
inherit name path;
|
||||
deps = [ goProto ] ++ extraDeps;
|
||||
deps = [ protoLibs.goProto ] ++ extraDeps;
|
||||
srcs = lib.singleton (runCommand "goproto-${name}.pb.go" {} ''
|
||||
cp ${proto} ${baseNameOf proto}
|
||||
${protobuf}/bin/protoc --plugin=${goProto}/bin/protoc-gen-go \
|
||||
--go_out=${protocFlags}import_path=${baseNameOf path}:. ${baseNameOf proto}
|
||||
${protobuf}/bin/protoc --plugin=${protoLibs.goProto}/bin/protoc-gen-go \
|
||||
--go_out=plugins=grpc,import_path=${baseNameOf path}:. ${baseNameOf proto}
|
||||
mv *.pb.go $out
|
||||
'');
|
||||
};
|
||||
|
||||
# Build a Go library out of the specified gRPC definition.
|
||||
grpc = args: proto (args // { extraDeps = [ protoLibs.goGrpc ]; });
|
||||
|
||||
# Build an externally defined Go library using `go build` itself.
|
||||
#
|
||||
# Libraries built this way can be included in any standard buildGo
|
||||
|
@ -128,5 +131,5 @@ let
|
|||
};
|
||||
in {
|
||||
# Only the high-level builder functions are exposed
|
||||
inherit program package proto external;
|
||||
inherit program package proto grpc external;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue