1use crate::{App, CoreError, PluginInfo};
2
3impl App {
4 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 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}