sqry_plugin_registry/
lib.rs1use sqry_core::plugin::PluginManager;
13
14#[must_use]
38pub fn create_plugin_manager() -> PluginManager {
39 let mut pm = PluginManager::new();
40
41 pm.register_builtin(Box::new(sqry_lang_c::CPlugin::default()));
43 pm.register_builtin(Box::new(sqry_lang_cpp::CppPlugin::default()));
44 pm.register_builtin(Box::new(sqry_lang_csharp::CSharpPlugin::default()));
45 pm.register_builtin(Box::new(sqry_lang_css::CssPlugin::default()));
46 pm.register_builtin(Box::new(sqry_lang_dart::DartPlugin::default()));
47 pm.register_builtin(Box::new(sqry_lang_elixir::ElixirPlugin::default()));
48 pm.register_builtin(Box::new(sqry_lang_go::GoPlugin::default()));
49 pm.register_builtin(Box::new(sqry_lang_groovy::GroovyPlugin::default()));
50 pm.register_builtin(Box::new(sqry_lang_haskell::HaskellPlugin::default()));
51 pm.register_builtin(Box::new(sqry_lang_html::HtmlPlugin::default()));
52 pm.register_builtin(Box::new(sqry_lang_java::JavaPlugin::default()));
53 pm.register_builtin(Box::new(sqry_lang_javascript::JavaScriptPlugin::default()));
54 pm.register_builtin(Box::new(sqry_lang_kotlin::KotlinPlugin::default()));
55 pm.register_builtin(Box::new(sqry_lang_lua::LuaPlugin::default()));
56 pm.register_builtin(Box::new(sqry_lang_perl::PerlPlugin::default()));
57 pm.register_builtin(Box::new(sqry_lang_php::PhpPlugin::default()));
58 pm.register_builtin(Box::new(sqry_lang_python::PythonPlugin::default()));
59 pm.register_builtin(Box::new(sqry_lang_r::RPlugin::default()));
60 pm.register_builtin(Box::new(sqry_lang_ruby::RubyPlugin::default()));
61 pm.register_builtin(Box::new(sqry_lang_rust::RustPlugin::default()));
62 pm.register_builtin(Box::new(sqry_lang_scala::ScalaPlugin::default()));
63 pm.register_builtin(Box::new(sqry_lang_shell::ShellPlugin::default()));
64 pm.register_builtin(Box::new(sqry_lang_sql::SqlPlugin::default()));
65 pm.register_builtin(Box::new(sqry_lang_svelte::SveltePlugin::default()));
66 pm.register_builtin(Box::new(sqry_lang_swift::SwiftPlugin::default()));
67 pm.register_builtin(Box::new(sqry_lang_typescript::TypeScriptPlugin::default()));
68 pm.register_builtin(Box::new(sqry_lang_vue::VuePlugin::default()));
69 pm.register_builtin(Box::new(sqry_lang_zig::ZigPlugin::default()));
70
71 pm.register_builtin(Box::new(
73 sqry_lang_oracle_plsql::OraclePlsqlPlugin::default(),
74 ));
75 pm.register_builtin(Box::new(
76 sqry_lang_salesforce_apex::SalesforceApexPlugin::default(),
77 ));
78 pm.register_builtin(Box::new(sqry_lang_sap_abap::SapAbapPlugin::default()));
79 pm.register_builtin(Box::new(
80 sqry_lang_servicenow_xanadu::ServiceNowXanaduPlugin::default(),
81 ));
82 pm.register_builtin(Box::new(
83 sqry_lang_servicenow_xml::ServiceNowXmlPlugin::default(),
84 ));
85
86 pm.register_builtin(Box::new(sqry_lang_terraform::TerraformPlugin::default()));
88 pm.register_builtin(Box::new(sqry_lang_puppet::PuppetPlugin::default()));
89 pm.register_builtin(Box::new(sqry_lang_pulumi::PulumiPlugin::default()));
90
91 pm.register_builtin(Box::new(sqry_lang_json::JsonPlugin::new()));
93
94 pm
95}
96
97#[cfg(test)]
98mod tests {
99 use super::*;
100
101 #[test]
102 fn test_create_plugin_manager_has_all_plugins() {
103 let pm = create_plugin_manager();
104 let plugins = pm.plugins();
105
106 assert_eq!(
108 plugins.len(),
109 37,
110 "Expected 37 plugins, got {}",
111 plugins.len()
112 );
113 }
114
115 #[test]
116 fn test_create_plugin_manager_has_rust() {
117 let pm = create_plugin_manager();
118 assert!(pm.plugin_for_extension("rs").is_some());
119 assert!(pm.plugin_by_id("rust").is_some());
120 }
121
122 #[test]
123 fn test_create_plugin_manager_has_javascript() {
124 let pm = create_plugin_manager();
125 assert!(pm.plugin_for_extension("js").is_some());
126 assert!(pm.plugin_by_id("javascript").is_some());
127 }
128
129 #[test]
130 fn test_create_plugin_manager_has_python() {
131 let pm = create_plugin_manager();
132 assert!(pm.plugin_for_extension("py").is_some());
133 assert!(pm.plugin_by_id("python").is_some());
134 }
135
136 #[test]
137 fn test_create_plugin_manager_has_elixir() {
138 let pm = create_plugin_manager();
139 assert!(pm.plugin_for_extension("ex").is_some());
140 assert!(pm.plugin_by_id("elixir").is_some());
141 }
142
143 #[test]
144 fn test_create_plugin_manager_has_sql() {
145 let pm = create_plugin_manager();
146 assert!(pm.plugin_for_extension("sql").is_some());
147 assert!(pm.plugin_by_id("sql").is_some());
148 }
149
150 #[test]
151 fn test_create_plugin_manager_has_zig() {
152 let pm = create_plugin_manager();
153 assert!(pm.plugin_for_extension("zig").is_some());
154 assert!(pm.plugin_by_id("zig").is_some());
155 }
156}