Skip to main content

vs_core/service/
info.rs

1//! Services for reading plugin metadata and runtime paths.
2
3use crate::{App, CoreError, PluginInfo};
4
5impl App {
6    /// Loads registry and backend metadata for a plugin.
7    pub fn plugin_info(&self, name: &str) -> Result<PluginInfo, CoreError> {
8        let entry = self.resolve_registry_entry(name)?;
9        let plugin = self.load_plugin(&entry)?;
10        let manifest = plugin.manifest().clone();
11        let available_versions = plugin.available_versions(&[])?;
12        let installed_versions = self.installer.installed_versions(&manifest.name)?;
13
14        Ok(PluginInfo {
15            entry,
16            manifest,
17            available_versions,
18            installed_versions,
19        })
20    }
21
22    /// Returns the installed runtime path for a specific plugin version.
23    pub fn plugin_runtime_path(
24        &self,
25        plugin_name: &str,
26        version: &str,
27    ) -> Result<Option<std::path::PathBuf>, CoreError> {
28        Ok(self
29            .load_installed_runtime(plugin_name, version)?
30            .map(|runtime| runtime.main.path))
31    }
32}