pipedash_core/plugins/
mod.rs1use pipedash_plugin_api::{
2 Plugin as PluginTrait,
3 PluginMetadata,
4 PluginRegistry,
5};
6
7pub fn create_plugin_registry() -> PluginRegistry {
8 let mut registry = PluginRegistry::new();
9
10 registry.register(Box::new(pipedash_plugin_github::GitHubPlugin::new()));
11 registry.register(Box::new(pipedash_plugin_gitea::GiteaPlugin::new()));
12 registry.register(Box::new(pipedash_plugin_gitlab::GitLabPlugin::new()));
13 registry.register(Box::new(pipedash_plugin_bitbucket::BitbucketPlugin::new()));
14 registry.register(Box::new(pipedash_plugin_buildkite::BuildkitePlugin::new()));
15 registry.register(Box::new(
16 pipedash_plugin_azure_devops::AzureDevOpsPlugin::new(),
17 ));
18 registry.register(Box::new(pipedash_plugin_jenkins::JenkinsPlugin::new()));
19 registry.register(Box::new(pipedash_plugin_tekton::TektonPlugin::new()));
20 registry.register(Box::new(pipedash_plugin_argocd::ArgocdPlugin::new()));
21 registry.register(Box::new(pipedash_plugin_fluxcd::FluxcdPlugin::new()));
22 registry.register(Box::new(pipedash_plugin_komodo::KomodoPlugin::new()));
23
24 registry
25}
26
27pub fn get_all_plugin_metadata() -> Vec<PluginMetadata> {
28 let registry = create_plugin_registry();
29 registry
30 .provider_types()
31 .iter()
32 .filter_map(|provider_type| registry.get(provider_type))
33 .map(|p| p.metadata().clone())
34 .collect()
35}
36
37pub fn create_plugin(provider_type: &str) -> Option<Box<dyn PluginTrait>> {
38 match provider_type {
39 "github" => Some(Box::new(pipedash_plugin_github::GitHubPlugin::new())),
40 "gitea" => Some(Box::new(pipedash_plugin_gitea::GiteaPlugin::new())),
41 "gitlab" => Some(Box::new(pipedash_plugin_gitlab::GitLabPlugin::new())),
42 "bitbucket" => Some(Box::new(pipedash_plugin_bitbucket::BitbucketPlugin::new())),
43 "buildkite" => Some(Box::new(pipedash_plugin_buildkite::BuildkitePlugin::new())),
44 "azure-devops" => Some(Box::new(
45 pipedash_plugin_azure_devops::AzureDevOpsPlugin::new(),
46 )),
47 "jenkins" => Some(Box::new(pipedash_plugin_jenkins::JenkinsPlugin::new())),
48 "tekton" => Some(Box::new(pipedash_plugin_tekton::TektonPlugin::new())),
49 "argocd" => Some(Box::new(pipedash_plugin_argocd::ArgocdPlugin::new())),
50 "fluxcd" => Some(Box::new(pipedash_plugin_fluxcd::FluxcdPlugin::new())),
51 "komodo" => Some(Box::new(pipedash_plugin_komodo::KomodoPlugin::new())),
52 _ => None,
53 }
54}