1use crate::{App, CoreError, PluginInfo};
4
5impl App {
6 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 = self.cached_available_versions(&manifest.name, &[])?;
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 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}