@@ -46,15 +46,15 @@ pub struct JsonWorkspaceHandle {
46
46
#[ derive( Debug , Clone , Deserialize , Serialize ) ]
47
47
#[ serde( tag = "type" ) ]
48
48
pub enum DiscoverProjectMessage {
49
- Error { message : String } ,
49
+ Error { message : String , context : Option < String > } ,
50
50
Progress { message : String } ,
51
51
Finished { project_json : Vec < ProjectJsonData > } ,
52
52
}
53
53
54
54
impl ParseFromLine for DiscoverProjectMessage {
55
55
fn from_line ( line : & str , _error : & mut String ) -> Option < Self > {
56
56
let Ok ( value) = serde_json:: from_str :: < serde_json:: Value > ( line) else {
57
- return Some ( DiscoverProjectMessage :: Error { message : line. to_owned ( ) } ) ;
57
+ return Some ( DiscoverProjectMessage :: Error { message : line. to_owned ( ) , context : None } ) ;
58
58
} ;
59
59
60
60
if let Ok ( project) = serde_json:: from_value :: < ProjectJsonData > ( value. clone ( ) ) {
@@ -67,6 +67,15 @@ impl ParseFromLine for DiscoverProjectMessage {
67
67
} ) ;
68
68
}
69
69
70
+ if let Some ( error) = value. pointer ( "/fields/error" ) {
71
+ if let Some ( source) = value. pointer ( "/fields/source" ) {
72
+ return Some ( DiscoverProjectMessage :: Error {
73
+ message : error. as_str ( ) . unwrap ( ) . to_owned ( ) ,
74
+ context : Some ( source. as_str ( ) . unwrap ( ) . to_owned ( ) ) ,
75
+ } ) ;
76
+ }
77
+ }
78
+
70
79
None
71
80
}
72
81
0 commit comments