Move the following modules from crates/owlry/src/ to crates/owlry-core/src/: - config/ (configuration loading and types) - data/ (frecency store) - filter.rs (provider filtering and prefix parsing) - notify.rs (desktop notifications) - paths.rs (XDG path handling) - plugins/ (plugin system: native loader, manifest, registry, runtime loader, Lua API) - providers/ (provider trait, manager, application, command, native_provider, lua_provider) Notable changes from the original: - providers/mod.rs: ProviderManager constructor changed from with_native_plugins() to new(core_providers, native_providers) to decouple from DmenuProvider (which stays in owlry as a UI concern) - plugins/mod.rs: commands module removed (stays in owlry as CLI concern) - Added thiserror and tempfile dependencies to owlry-core Cargo.toml
52 lines
1.4 KiB
Rust
52 lines
1.4 KiB
Rust
//! Plugin system error types
|
|
|
|
use thiserror::Error;
|
|
|
|
/// Errors that can occur in the plugin system
|
|
#[derive(Error, Debug)]
|
|
#[allow(dead_code)] // Some variants are for future use
|
|
pub enum PluginError {
|
|
#[error("Plugin '{0}' not found")]
|
|
NotFound(String),
|
|
|
|
#[error("Invalid plugin manifest in '{plugin}': {message}")]
|
|
InvalidManifest { plugin: String, message: String },
|
|
|
|
#[error("Plugin '{plugin}' requires owlry {required}, but current version is {current}")]
|
|
VersionMismatch {
|
|
plugin: String,
|
|
required: String,
|
|
current: String,
|
|
},
|
|
|
|
#[error("Lua error in plugin '{plugin}': {message}")]
|
|
LuaError { plugin: String, message: String },
|
|
|
|
#[error("Plugin '{plugin}' timed out after {timeout_ms}ms")]
|
|
Timeout { plugin: String, timeout_ms: u64 },
|
|
|
|
#[error("Plugin '{plugin}' attempted forbidden operation: {operation}")]
|
|
SandboxViolation { plugin: String, operation: String },
|
|
|
|
#[error("Plugin '{0}' is already loaded")]
|
|
AlreadyLoaded(String),
|
|
|
|
#[error("Plugin '{0}' is disabled")]
|
|
Disabled(String),
|
|
|
|
#[error("Failed to load native plugin: {0}")]
|
|
LoadError(String),
|
|
|
|
#[error("IO error: {0}")]
|
|
Io(#[from] std::io::Error),
|
|
|
|
#[error("TOML parsing error: {0}")]
|
|
TomlParse(#[from] toml::de::Error),
|
|
|
|
#[error("JSON error: {0}")]
|
|
Json(#[from] serde_json::Error),
|
|
}
|
|
|
|
/// Result type for plugin operations
|
|
pub type PluginResult<T> = Result<T, PluginError>;
|