Skip to content

Commit 6b16db5

Browse files
Andrewmwells/protobufs (#1277)
Signed-off-by: Brandon Rozek <[email protected]> Signed-off-by: Andrew Wells <[email protected]> Co-authored-by: Brandon Rozek <[email protected]>
1 parent 4be5f5f commit 6b16db5

File tree

27 files changed

+2973
-0
lines changed

27 files changed

+2973
-0
lines changed

.github/workflows/build_and_test.yml

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ jobs:
1818

1919
steps:
2020
- uses: actions/checkout@v4
21+
- run: sudo apt-get install protobuf-compiler
2122
- run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }}
2223
- run: ./panic_safety.sh
2324
- run: cargo doc --all-features --no-deps
@@ -43,6 +44,7 @@ jobs:
4344

4445
steps:
4546
- uses: actions/checkout@v4
47+
- run: sudo apt-get install protobuf-compiler
4648
- run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }}
4749
# Clippy is configured by `.cargo/config.toml` to deny on lints like
4850
# `unwrap_used`. They aren't detected by `panic_safety.sh` which only

.github/workflows/ci.yml

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ jobs:
4040
# `cargo semver-checks` doesn't understand `rlib` crates.
4141
- run: >-
4242
sed -i -E 's/^(crate-type = \["rlib", "cdylib"\]|crate-type = \["rlib"\])$/crate-type = ["lib"]/' {head,base}/cedar-policy/Cargo.toml
43+
- run: sudo apt-get install protobuf-compiler
4344
- run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }}
4445
- run: cargo install cargo-semver-checks
4546
- run: cargo semver-checks check-release --package cedar-policy --baseline-root ../base

cedar-policy-core/Cargo.toml

+6
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ serde-wasm-bindgen = { version = "0.6", optional = true }
3737
tsify = { version = "0.4.5", optional = true }
3838
wasm-bindgen = { version = "0.2.82", optional = true }
3939

40+
# protobuf dependency
41+
prost = { version = "0.13.3", optional = true }
42+
4043
[features]
4144
# by default, enable all Cedar extensions
4245
default = ["ipaddr", "decimal"]
@@ -52,9 +55,12 @@ test-util = []
5255
# Experimental features.
5356
partial-eval = []
5457
wasm = ["serde-wasm-bindgen", "tsify", "wasm-bindgen"]
58+
protobufs = ["dep:prost", "dep:prost-build"]
5559

5660
[build-dependencies]
5761
lalrpop = "0.22.0"
62+
# protobuf dependency
63+
prost-build = { version = "0.13.3", optional = true }
5864

5965
[dev-dependencies]
6066
cool_asserts = "2.0"

cedar-policy-core/build.rs

+11
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
fn main() {
1818
generate_parsers();
19+
#[cfg(feature = "protobufs")]
20+
generate_schemas();
1921
}
2022

2123
/// Reads parser grammar files (.lalrpop) and generates Rust modules
@@ -26,3 +28,12 @@ fn generate_parsers() {
2628
.process_dir("src/parser/")
2729
.expect("parser synth");
2830
}
31+
32+
#[cfg(feature = "protobufs")]
33+
/// Reads protobuf schema files (.proto) and generates Rust modules
34+
fn generate_schemas() {
35+
// PANIC SAFETY: static file compiled at build time
36+
#[allow(clippy::expect_used)]
37+
prost_build::compile_protos(&["./protobuf_schema/AST.proto"], &["./protobuf_schema"])
38+
.expect("failed to compile `.proto` schema files");
39+
}

0 commit comments

Comments
 (0)