@@ -7,19 +7,45 @@ pub mod plugin {
77 include ! ( concat!( env!( "OUT_DIR" ) , "/plugin.rs" ) ) ;
88}
99
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 > {
1111 plugin:: CodeGenRequest :: decode ( & mut Cursor :: new ( buf) )
1212}
1313
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+
1432fn main ( ) -> Result < ( ) , prost:: DecodeError > {
1533 let stdin = io:: stdin ( ) ;
1634 let mut stdin = stdin. lock ( ) ;
1735 let buffer = stdin. fill_buf ( ) . unwrap ( ) ;
1836
19- let request_deserialized_result = match deserialize_greeter ( & buffer) {
37+ let _ = match deserialize_codegen_request ( & buffer) {
2038 Ok ( request_deserialized_result) => request_deserialized_result,
21- Err ( e ) => return Err ( e ) ,
39+ Err ( _e ) => std :: process :: exit ( 1 ) ,
2240 } ;
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+
2450 Ok ( ( ) )
2551}
0 commit comments