1
1
mod paths;
2
- #[ cfg( test) ]
3
- mod tests;
4
2
5
3
use std:: {
6
4
fs:: { self , read_to_string} ,
@@ -63,9 +61,13 @@ fn get_dirs(dir_path: &PathBuf) -> Result<impl Iterator<Item = PathBuf>, io::Err
63
61
Ok ( dirs)
64
62
}
65
63
64
+ /// Loads parser infos and metadata from the provided parser directory.
66
65
async fn load_parser ( dir : PathBuf ) -> Result < PluginEntity , InitError > {
67
66
let ( wasm_file, metadata_file) = match validate_plugin_files ( & dir) ? {
68
- PluginValidationState :: Valid { wasm, metadata } => ( wasm, metadata) ,
67
+ PluginValidationState :: Valid {
68
+ wasm_path : wasm,
69
+ metadata,
70
+ } => ( wasm, metadata) ,
69
71
PluginValidationState :: Invalid { err_msg } => {
70
72
let invalid_entity = PluginEntity {
71
73
dir_path : dir,
@@ -127,17 +129,25 @@ async fn load_parser(dir: PathBuf) -> Result<PluginEntity, InitError> {
127
129
Ok ( valid_plugin)
128
130
}
129
131
132
+ /// Represents Plugins State and the corresponding infos.
130
133
#[ derive( Debug , Clone ) ]
131
134
enum PluginValidationState {
135
+ /// Represents valid plugin with its infos and metadata.
132
136
Valid {
133
- wasm : PathBuf ,
137
+ /// The path for the plugin wasm file.
138
+ wasm_path : PathBuf ,
139
+ /// Metadata of the plugins found in plugins metadata toml file.
134
140
metadata : Option < PathBuf > ,
135
141
} ,
142
+ /// Represents an invalid plugin with infos about validation error.
136
143
Invalid {
144
+ /// Error message explaining why the plugin is invalid.
137
145
err_msg : String ,
138
146
} ,
139
147
}
140
148
149
+ /// Loads the files inside plugin directory and validate their content return the state
150
+ /// of the plugin.
141
151
fn validate_plugin_files ( dir : & PathBuf ) -> Result < PluginValidationState , InitError > {
142
152
use PluginValidationState as Re ;
143
153
let mut wasm_file = None ;
@@ -172,7 +182,7 @@ fn validate_plugin_files(dir: &PathBuf) -> Result<PluginValidationState, InitErr
172
182
173
183
let res = match wasm_file {
174
184
Some ( wasm) => Re :: Valid {
175
- wasm,
185
+ wasm_path : wasm,
176
186
metadata : metadata_file,
177
187
} ,
178
188
None => {
@@ -185,13 +195,15 @@ fn validate_plugin_files(dir: &PathBuf) -> Result<PluginValidationState, InitErr
185
195
Ok ( res)
186
196
}
187
197
198
+ /// Parser the plugin metadata from the provided toml file.
188
199
fn parse_metadata ( file : & PathBuf ) -> Result < PluginMetadata , String > {
189
200
let content = read_to_string ( file)
190
201
. map_err ( |err| format ! ( "Reading metadata file fail. Error {err:#?}" ) ) ?;
191
202
192
203
toml:: from_str ( & content) . map_err ( |err| format ! ( "Parsing metadata file fail. Error {err:#?}" ) )
193
204
}
194
205
206
+ /// Loads all byte-source plugins from their main directory.
195
207
async fn load_all_bytesources ( ) -> Result < Vec < PluginEntity > , InitError > {
196
208
let mut bytesources = Vec :: new ( ) ;
197
209
@@ -211,9 +223,13 @@ async fn load_all_bytesources() -> Result<Vec<PluginEntity>, InitError> {
211
223
Ok ( bytesources)
212
224
}
213
225
226
+ /// Loads byte-source infos and metadata from the provided parser directory.
214
227
async fn load_bytesource ( dir : PathBuf ) -> Result < PluginEntity , InitError > {
215
228
let ( wasm_file, metadata_file) = match validate_plugin_files ( & dir) ? {
216
- PluginValidationState :: Valid { wasm, metadata } => ( wasm, metadata) ,
229
+ PluginValidationState :: Valid {
230
+ wasm_path : wasm,
231
+ metadata,
232
+ } => ( wasm, metadata) ,
217
233
PluginValidationState :: Invalid { err_msg } => {
218
234
let invalid_entity = PluginEntity {
219
235
dir_path : dir,
0 commit comments