pub struct PluginManager {
pub working_dir: Option<PathBuf>,
pub paths: PluginPaths,
}Expand description
Plugin manager: discovers, installs, and manages plugins.
Fields§
§working_dir: Option<PathBuf>Working directory for path resolution.
paths: PluginPathsResolved paths.
Implementations§
Source§impl PluginManager
impl PluginManager
Sourcepub fn discover_plugins(&self) -> Result<Vec<PluginManifest>>
pub fn discover_plugins(&self) -> Result<Vec<PluginManifest>>
Discover plugins from both project and global plugin directories.
Scans each directory for subdirectories containing a manifest.json.
Sourcepub fn load_manifest(&self, plugin_dir: &Path) -> Result<PluginManifest>
pub fn load_manifest(&self, plugin_dir: &Path) -> Result<PluginManifest>
Load a plugin manifest from a directory.
Checks multiple possible locations for manifest.json.
Sourcepub fn install_plugin(
&self,
plugin_name: &str,
marketplace_name: &str,
scope: PluginScope,
) -> Result<PluginConfig>
pub fn install_plugin( &self, plugin_name: &str, marketplace_name: &str, scope: PluginScope, ) -> Result<PluginConfig>
Install a plugin from a marketplace into the plugins directory.
Sourcepub fn uninstall_plugin(
&self,
plugin_name: &str,
marketplace_name: &str,
scope: PluginScope,
) -> Result<()>
pub fn uninstall_plugin( &self, plugin_name: &str, marketplace_name: &str, scope: PluginScope, ) -> Result<()>
Uninstall a plugin.
Sourcepub fn enable_plugin(
&self,
plugin_name: &str,
marketplace_name: &str,
scope: PluginScope,
) -> Result<()>
pub fn enable_plugin( &self, plugin_name: &str, marketplace_name: &str, scope: PluginScope, ) -> Result<()>
Enable a disabled plugin.
Sourcepub fn disable_plugin(
&self,
plugin_name: &str,
marketplace_name: &str,
scope: PluginScope,
) -> Result<()>
pub fn disable_plugin( &self, plugin_name: &str, marketplace_name: &str, scope: PluginScope, ) -> Result<()>
Disable a plugin.
Sourcepub fn list_installed(
&self,
scope: Option<PluginScope>,
) -> Result<Vec<PluginConfig>>
pub fn list_installed( &self, scope: Option<PluginScope>, ) -> Result<Vec<PluginConfig>>
List all installed plugins, optionally filtering by scope.
Sourcepub fn load_known_marketplaces(&self) -> Result<KnownMarketplaces>
pub fn load_known_marketplaces(&self) -> Result<KnownMarketplaces>
Load the known marketplaces registry from disk.
Sourcepub fn save_known_marketplaces(
&self,
marketplaces: &KnownMarketplaces,
) -> Result<()>
pub fn save_known_marketplaces( &self, marketplaces: &KnownMarketplaces, ) -> Result<()>
Save the known marketplaces registry to disk.
Sourcepub fn load_installed_plugins(
&self,
scope: PluginScope,
) -> Result<InstalledPlugins>
pub fn load_installed_plugins( &self, scope: PluginScope, ) -> Result<InstalledPlugins>
Load the installed plugins registry from disk.
Sourcepub fn save_installed_plugins(
&self,
plugins: &InstalledPlugins,
scope: PluginScope,
) -> Result<()>
pub fn save_installed_plugins( &self, plugins: &InstalledPlugins, scope: PluginScope, ) -> Result<()>
Save the installed plugins registry to disk.
Sourcepub fn load_plugin_metadata(&self, plugin_dir: &Path) -> Result<PluginMetadata>
pub fn load_plugin_metadata(&self, plugin_dir: &Path) -> Result<PluginMetadata>
Load plugin metadata from a plugin.json file in the given directory.
Sourcepub fn parse_skill_metadata(skill_file: &Path) -> (String, String)
pub fn parse_skill_metadata(skill_file: &Path) -> (String, String)
Parse SKILL.md frontmatter for name and description.
Sourcepub fn discover_skills_in_dir(plugin_dir: &Path) -> Vec<String>
pub fn discover_skills_in_dir(plugin_dir: &Path) -> Vec<String>
Discover skill names in a plugin directory.
Sourcepub fn extract_name_from_url(url: &str) -> String
pub fn extract_name_from_url(url: &str) -> String
Extract a name from a git URL.
Source§impl PluginManager
impl PluginManager
Sourcepub fn add_marketplace(
&self,
url: &str,
name: Option<&str>,
branch: &str,
) -> Result<MarketplaceInfo>
pub fn add_marketplace( &self, url: &str, name: Option<&str>, branch: &str, ) -> Result<MarketplaceInfo>
Add a marketplace by recording its info and cloning its repository.
In this Rust port the actual git clone is performed synchronously
via std::process::Command.
Sourcepub fn remove_marketplace(&self, name: &str) -> Result<()>
pub fn remove_marketplace(&self, name: &str) -> Result<()>
Remove a marketplace.
Sourcepub fn list_marketplaces(&self) -> Result<Vec<MarketplaceInfo>>
pub fn list_marketplaces(&self) -> Result<Vec<MarketplaceInfo>>
List all registered marketplaces.
Sourcepub fn sync_marketplace(&self, name: &str) -> Result<()>
pub fn sync_marketplace(&self, name: &str) -> Result<()>
Sync (git pull) a marketplace.
Sourcepub fn sync_all_marketplaces(&self) -> Result<HashMap<String, Option<String>>>
pub fn sync_all_marketplaces(&self) -> Result<HashMap<String, Option<String>>>
Sync all registered marketplaces. Returns a map of name to optional error message.
Sourcepub fn get_marketplace_catalog(&self, name: &str) -> Result<MarketplaceCatalog>
pub fn get_marketplace_catalog(&self, name: &str) -> Result<MarketplaceCatalog>
Get the plugin catalog from a marketplace. If no marketplace.json exists, auto-discovers plugins from plugins/ and skills/ dirs.
Sourcepub fn list_marketplace_plugins(
&self,
name: &str,
) -> Result<Vec<PluginMetadata>>
pub fn list_marketplace_plugins( &self, name: &str, ) -> Result<Vec<PluginMetadata>>
List all plugins available in a marketplace.
Sourcepub fn search_marketplace(
&self,
marketplace_name: &str,
query: &str,
) -> Result<Vec<PluginMetadata>>
pub fn search_marketplace( &self, marketplace_name: &str, query: &str, ) -> Result<Vec<PluginMetadata>>
Search marketplace plugins by query string. Simple substring match on name/description.
Sourcepub async fn fetch_remote_catalog(
registry_url: &str,
) -> Result<MarketplaceCatalog>
pub async fn fetch_remote_catalog( registry_url: &str, ) -> Result<MarketplaceCatalog>
Fetch a marketplace catalog from a remote HTTP registry URL.