use sqry_core::plugin::PluginManager;
#[must_use]
pub fn create_plugin_manager() -> PluginManager {
let mut pm = PluginManager::new();
pm.register_builtin(Box::new(sqry_lang_c::CPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_cpp::CppPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_csharp::CSharpPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_css::CssPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_dart::DartPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_elixir::ElixirPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_go::GoPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_groovy::GroovyPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_haskell::HaskellPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_html::HtmlPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_java::JavaPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_javascript::JavaScriptPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_kotlin::KotlinPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_lua::LuaPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_perl::PerlPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_php::PhpPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_python::PythonPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_r::RPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_ruby::RubyPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_rust::RustPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_scala::ScalaPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_shell::ShellPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_sql::SqlPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_svelte::SveltePlugin::default()));
pm.register_builtin(Box::new(sqry_lang_swift::SwiftPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_typescript::TypeScriptPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_vue::VuePlugin::default()));
pm.register_builtin(Box::new(sqry_lang_zig::ZigPlugin::default()));
pm.register_builtin(Box::new(
sqry_lang_oracle_plsql::OraclePlsqlPlugin::default(),
));
pm.register_builtin(Box::new(
sqry_lang_salesforce_apex::SalesforceApexPlugin::default(),
));
pm.register_builtin(Box::new(sqry_lang_sap_abap::SapAbapPlugin::default()));
pm.register_builtin(Box::new(
sqry_lang_servicenow_xanadu::ServiceNowXanaduPlugin::default(),
));
pm.register_builtin(Box::new(
sqry_lang_servicenow_xml::ServiceNowXmlPlugin::default(),
));
pm.register_builtin(Box::new(sqry_lang_terraform::TerraformPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_puppet::PuppetPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_pulumi::PulumiPlugin::default()));
pm.register_builtin(Box::new(sqry_lang_json::JsonPlugin::new()));
pm
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_create_plugin_manager_has_all_plugins() {
let pm = create_plugin_manager();
let plugins = pm.plugins();
assert_eq!(
plugins.len(),
37,
"Expected 37 plugins, got {}",
plugins.len()
);
}
#[test]
fn test_create_plugin_manager_has_rust() {
let pm = create_plugin_manager();
assert!(pm.plugin_for_extension("rs").is_some());
assert!(pm.plugin_by_id("rust").is_some());
}
#[test]
fn test_create_plugin_manager_has_javascript() {
let pm = create_plugin_manager();
assert!(pm.plugin_for_extension("js").is_some());
assert!(pm.plugin_by_id("javascript").is_some());
}
#[test]
fn test_create_plugin_manager_has_python() {
let pm = create_plugin_manager();
assert!(pm.plugin_for_extension("py").is_some());
assert!(pm.plugin_by_id("python").is_some());
}
#[test]
fn test_create_plugin_manager_has_elixir() {
let pm = create_plugin_manager();
assert!(pm.plugin_for_extension("ex").is_some());
assert!(pm.plugin_by_id("elixir").is_some());
}
#[test]
fn test_create_plugin_manager_has_sql() {
let pm = create_plugin_manager();
assert!(pm.plugin_for_extension("sql").is_some());
assert!(pm.plugin_by_id("sql").is_some());
}
#[test]
fn test_create_plugin_manager_has_zig() {
let pm = create_plugin_manager();
assert!(pm.plugin_for_extension("zig").is_some());
assert!(pm.plugin_by_id("zig").is_some());
}
}