@@ -3,6 +3,8 @@ use lsp_types::Url;
33#[ derive( Debug , Clone , Default , serde:: Deserialize ) ]
44#[ serde( rename_all = "kebab-case" ) ]
55pub ( crate ) struct BackendConfig {
6+ #[ serde( default ) ]
7+ pub ( crate ) glass_easel_backend_config : GlassEaselBackendConfig ,
68 #[ serde( default ) ]
79 pub ( crate ) element : Vec < ElementConfig > ,
810 #[ serde( default ) ]
@@ -23,6 +25,21 @@ pub(crate) struct BackendConfig {
2325 pub ( crate ) style_property : Vec < StylePropertyConfig > ,
2426}
2527
28+ #[ derive( Debug , Clone , Default , serde:: Deserialize ) ]
29+ #[ serde( rename_all = "kebab-case" ) ]
30+ pub ( crate ) struct GlassEaselBackendConfig {
31+ #[ serde( default ) ]
32+ pub ( crate ) name : String ,
33+ #[ serde( default ) ]
34+ #[ allow( dead_code) ]
35+ pub ( crate ) description : String ,
36+ #[ serde( default ) ]
37+ pub ( crate ) major_version : u32 ,
38+ #[ serde( default ) ]
39+ #[ allow( dead_code) ]
40+ pub ( crate ) minor_version : u32 ,
41+ }
42+
2643#[ derive( Debug , Clone , serde:: Deserialize ) ]
2744#[ serde( rename_all = "kebab-case" ) ]
2845pub ( crate ) struct ElementConfig {
@@ -108,6 +125,18 @@ pub(crate) struct EventConfig {
108125}
109126
110127impl BackendConfig {
128+ pub ( crate ) fn parse_str ( s : & str ) -> anyhow:: Result < Self > {
129+ let config: Self = toml:: from_str ( s) ?;
130+ let major_version = config. glass_easel_backend_config . major_version ;
131+ if major_version < 1 {
132+ log:: warn!( "This backend configuration may be problematic. Please check the updates of it." ) ;
133+ } else if major_version > 1 {
134+ Err ( anyhow:: Error :: msg ( "The backend configuration is designed for a later version of glass-easel-analyzer." ) ) ?;
135+ }
136+ log:: info!( "Loaded backend configuration: {}" , config. glass_easel_backend_config. name) ;
137+ Ok ( config)
138+ }
139+
111140 pub ( crate ) fn search_element ( & self , tag_name : & str ) -> Option < & ElementConfig > {
112141 self . element . iter ( ) . find ( |x| x. tag_name == tag_name)
113142 }
0 commit comments