Skip to content

Commit 80289eb

Browse files
committed
attempts to make servicegenerator work
Signed-off-by: clux <[email protected]>
1 parent 9a31740 commit 80289eb

File tree

3 files changed

+21
-16
lines changed

3 files changed

+21
-16
lines changed

README.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,9 @@ Results of this step is committed already. But to run, invoke `just swagger`.
2626

2727

2828
## Building
29-
With all dependent `swagger` and `protos` files built, run:
29+
To build the [out](./out) directory from [build.rs](./build.rs) using swagger and protobuf results run `just build`.
3030

31-
```bash
32-
cargo build
33-
```
31+
Results of this step is committed already.
3432

3533
### Hack
3634

build.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ use std::rc::Rc;
44
#[derive(Default)]
55
struct GeneratorState {
66
service_names: Vec<String>,
7-
package_names: Vec<String>,
87
finalized: usize,
8+
generated: usize
99
}
1010

1111
struct KubeGenerator {
@@ -20,22 +20,21 @@ impl KubeGenerator {
2020
}
2121

2222
impl prost_build::ServiceGenerator for KubeGenerator {
23-
fn generate(&mut self, service: prost_build::Service, _buf: &mut String) {
23+
fn generate(&mut self, service: prost_build::Service, buf: &mut String) {
2424
let mut state = self.state.borrow_mut();
2525
state.service_names.push(service.name);
26+
state.generated += 1;
27+
// TODO: THIS doesn't work? never called by prost_build, bug?
28+
let generics = format!("// TODO: generate\n");
29+
buf.push_str(&generics);
2630
}
2731

28-
fn finalize(&mut self, _buf: &mut String) {
32+
fn finalize(&mut self, buf: &mut String) {
2933
let mut state = self.state.borrow_mut();
3034
state.finalized += 1;
31-
}
32-
33-
fn finalize_package(&mut self, package: &str, buf: &mut String) {
34-
let mut state = self.state.borrow_mut();
35-
state.package_names.push(package.to_string());
36-
// TODO: generate generics for pkg here using self.data
37-
let pkg_generics = format!("// blahtest");
38-
buf.push_str(&pkg_generics);
35+
// NB: THIS works, but we need a name here before it's useful
36+
//let generics = format!("// TODO: finalize\n");
37+
//buf.push_str(&generics);
3938
}
4039
}
4140

@@ -47,12 +46,13 @@ fn main() -> std::io::Result<()> {
4746
let state = Rc::new(RefCell::new(GeneratorState::default()));
4847
prost_build::Config::new()
4948
.service_generator(Box::new(KubeGenerator::new(Rc::clone(&state))))
49+
.out_dir("./out")
5050
.compile_protos(protos.as_slice(), &["protos/"])?;
5151

5252
// sanity
5353
let state = state.borrow();
54-
//assert_eq!(state.service_names.len(), protos.len()); zero atm..
5554
assert_eq!(state.finalized, protos.len());
55+
assert_eq!(state.generated, protos.len()); // TODO: why does generate not trigger
5656

5757
// Generate code in `src/` by reading files in `OUT_DIR`?
5858
// Need to create `mod.rs` file for each level based on the filename, and write generated code in correct file.

justfile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,10 @@ swagger-transform:
6060

6161
# Download and generate all swagger dependent files
6262
swagger: swagger-dl swagger-patch swagger-transform
63+
64+
# Generate the library code from completed swagger and protos
65+
build:
66+
#!/usr/bin/env bash
67+
set -exuo pipefail
68+
rm -rf out/ && mkdir out
69+
cargo build

0 commit comments

Comments
 (0)