@@ -4,8 +4,8 @@ use std::rc::Rc;
4
4
#[ derive( Default ) ]
5
5
struct GeneratorState {
6
6
service_names : Vec < String > ,
7
- package_names : Vec < String > ,
8
7
finalized : usize ,
8
+ generated : usize
9
9
}
10
10
11
11
struct KubeGenerator {
@@ -20,22 +20,21 @@ impl KubeGenerator {
20
20
}
21
21
22
22
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 ) {
24
24
let mut state = self . state . borrow_mut ( ) ;
25
25
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) ;
26
30
}
27
31
28
- fn finalize ( & mut self , _buf : & mut String ) {
32
+ fn finalize ( & mut self , buf : & mut String ) {
29
33
let mut state = self . state . borrow_mut ( ) ;
30
34
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);
39
38
}
40
39
}
41
40
@@ -47,12 +46,13 @@ fn main() -> std::io::Result<()> {
47
46
let state = Rc :: new ( RefCell :: new ( GeneratorState :: default ( ) ) ) ;
48
47
prost_build:: Config :: new ( )
49
48
. service_generator ( Box :: new ( KubeGenerator :: new ( Rc :: clone ( & state) ) ) )
49
+ . out_dir ( "./out" )
50
50
. compile_protos ( protos. as_slice ( ) , & [ "protos/" ] ) ?;
51
51
52
52
// sanity
53
53
let state = state. borrow ( ) ;
54
- //assert_eq!(state.service_names.len(), protos.len()); zero atm..
55
54
assert_eq ! ( state. finalized, protos. len( ) ) ;
55
+ assert_eq ! ( state. generated, protos. len( ) ) ; // TODO: why does generate not trigger
56
56
57
57
// Generate code in `src/` by reading files in `OUT_DIR`?
58
58
// Need to create `mod.rs` file for each level based on the filename, and write generated code in correct file.
0 commit comments