(&self)
| 326 | |
| 327 | #[tracing::instrument(level = "debug", skip(self))] |
| 328 | async fn find_extensions(&self) -> Vec<ExtensionManifest> { |
| 329 | let manifests = self.find_extension_manifests(); |
| 330 | let mut parsed_manifests = vec![]; |
| 331 | |
| 332 | let extensions_map = self.extensions_map.lock().await; |
| 333 | for manifest_path in manifests { |
| 334 | if let Ok(contents) = fs::read(manifest_path.clone()) { |
| 335 | match serde_json::from_slice::<ExtensionManifest>(&contents) { |
| 336 | Ok(mut manifest) => { |
| 337 | manifest.extension_entry = manifest_path |
| 338 | .parent() |
| 339 | .unwrap() |
| 340 | .join(manifest.extension_entry); |
| 341 | if !extensions_map.contains_key(&manifest.name) |
| 342 | && manifest.extension_entry.extension().unwrap() == "wasm" |
| 343 | && manifest.extension_entry.exists() |
| 344 | { |
| 345 | parsed_manifests.push(manifest); |
| 346 | } |
| 347 | } |
| 348 | Err(e) => tracing::error!("Error parsing manifest: {:?}", e), |
| 349 | } |
| 350 | } |
| 351 | } |
| 352 | |
| 353 | parsed_manifests |
| 354 | } |
| 355 | |
| 356 | #[tracing::instrument(level = "debug", skip())] |
| 357 | fn spawn_extension( |
no test coverage detected