Skip to main content

sqry_core/plugin/
mod.rs

1//! Plugin system for language support.
2//!
3//! This module provides a trait-based plugin architecture that allows sqry to support
4//! multiple programming languages through both built-in (statically linked) and external
5//! (dynamically loaded in Phase 3+) plugins.
6//!
7//! # Architecture
8//!
9//! - **LanguagePlugin trait**: Core trait that all language plugins must implement
10//! - **PluginManager**: Manages plugin registration and lookup
11//! - **Built-in plugins**: Statically linked plugins (Rust, JS, TS, Python, Go)
12//! - **External plugins** (Phase 3+): Dynamically loaded plugins from disk
13//!
14//! # Example
15//!
16//! ```
17//! use sqry_core::plugin::{PluginManager, LanguagePlugin};
18//!
19//! // Create manager with built-in plugins
20//! let manager = PluginManager::new();
21//!
22//! // Lookup plugin by file extension
23//! if let Some(plugin) = manager.plugin_for_extension("rs") {
24//!     let metadata = plugin.metadata();
25//!     println!("Found {} plugin v{}", metadata.name, metadata.version);
26//! }
27//! ```
28
29pub mod error;
30pub mod manager;
31pub mod safe_parse;
32pub mod types;
33
34pub use error::{PluginError, PluginResult};
35pub use manager::PluginManager;
36pub use safe_parse::{CancellationFlag, SafeParser, SafeParserConfig};
37pub use types::{LanguageMetadata, LanguagePlugin};