Skip to main content

vs_core/service/
info.rs

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