@@ -7,19 +7,45 @@ pub mod plugin {
7
7
include ! ( concat!( env!( "OUT_DIR" ) , "/plugin.rs" ) ) ;
8
8
}
9
9
10
- pub fn deserialize_greeter ( buf : & [ u8 ] ) -> Result < plugin:: CodeGenRequest , prost:: DecodeError > {
10
+ pub fn deserialize_codegen_request ( buf : & [ u8 ] ) -> Result < plugin:: CodeGenRequest , prost:: DecodeError > {
11
11
plugin:: CodeGenRequest :: decode ( & mut Cursor :: new ( buf) )
12
12
}
13
13
14
+ pub fn serialize_codegen_response ( resp : & plugin:: CodeGenResponse ) -> Vec < u8 > {
15
+ let mut buf = Vec :: new ( ) ;
16
+ buf. reserve ( resp. encoded_len ( ) ) ;
17
+
18
+ resp. encode ( & mut buf) . unwrap ( ) ;
19
+ buf
20
+ }
21
+
22
+ pub fn create_codegen_response ( ) -> plugin:: CodeGenResponse {
23
+ let mut file = plugin:: File :: default ( ) ;
24
+ file. name = "hello.txt" . to_string ( ) ;
25
+ file. contents = "Hello World" . as_bytes ( ) . to_vec ( ) ;
26
+
27
+ let mut resp = plugin:: CodeGenResponse :: default ( ) ;
28
+ resp. files . push ( file) ;
29
+ resp
30
+ }
31
+
14
32
fn main ( ) -> Result < ( ) , prost:: DecodeError > {
15
33
let stdin = io:: stdin ( ) ;
16
34
let mut stdin = stdin. lock ( ) ;
17
35
let buffer = stdin. fill_buf ( ) . unwrap ( ) ;
18
36
19
- let request_deserialized_result = match deserialize_greeter ( & buffer) {
37
+ let _ = match deserialize_codegen_request ( & buffer) {
20
38
Ok ( request_deserialized_result) => request_deserialized_result,
21
- Err ( e ) => return Err ( e ) ,
39
+ Err ( _e ) => std :: process :: exit ( 1 ) ,
22
40
} ;
23
- println ! ( "{:#?}" , request_deserialized_result) ;
41
+
42
+ let resp = create_codegen_response ( ) ;
43
+ let out = serialize_codegen_response ( & resp) ;
44
+
45
+ let _ = match io:: stdout ( ) . write_all ( & out) {
46
+ Ok ( result) => result,
47
+ Err ( _e) => std:: process:: exit ( 1 ) ,
48
+ } ;
49
+
24
50
Ok ( ( ) )
25
51
}
0 commit comments