-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathleanProtoPackage.nix
More file actions
26 lines (26 loc) · 1.39 KB
/
leanProtoPackage.nix
File metadata and controls
26 lines (26 loc) · 1.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{ pkgs ? import <nixpkgs> { }, leanPkgs, generator, leanproto, system, leangrpc ? false}:
with pkgs;
let runGenerator = {inpPathsStrList, inpRootStr, rootPackageNameStr, genGRPC ? false}:
assert lib.assertMsg ((genGRPC && (builtins.isAttrs leangrpc)) || (!genGRPC && !leangrpc))
"Generating gRPC services; must pass leangrpc as argument";
pkgs.stdenv.mkDerivation {
inherit (system);
name = "protoc-lean";
buildCommand = ''
mkdir -p $out/${rootPackageNameStr}
ln -s ${generator.executable}/bin/leanprotocplugin ./protoc-gen-lean
${pkgs.protobuf}/bin/protoc --plugin=protoc-gen-lean -I${inpRootStr} --lean_out=$out \
--lean_opt=${rootPackageNameStr} ${pkgs.lib.concatStringsSep " " inpPathsStrList}
'';
};
leanProtoPackage = {inpPathsStrList, inpRootStr, rootPackageNameStr, genGRPC ? false}@args:
assert lib.assertMsg ((genGRPC && (builtins.isAttrs leangrpc)) || (!genGRPC && !leangrpc))
"Generating gRPC services; must pass leangrpc as argument";
leanPkgs.buildLeanPackage {
name = rootPackageNameStr; # must match the name of the top-level .lean file
src = runGenerator args;
deps = [leanproto.packages.${system}] ++ (if genGRPC then [leangrpc.packages.${system}] else []);
};
in {
inherit runGenerator leanProtoPackage;
}