Skip to main content

pipedash_core/plugins/
mod.rs

1use 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    registry.register(Box::new(pipedash_plugin_prow::ProwPlugin::new()));
24    registry.register(Box::new(pipedash_plugin_coolify::CoolifyPlugin::new()));
25    registry.register(Box::new(pipedash_plugin_circleci::CircleCIPlugin::new()));
26    registry.register(Box::new(pipedash_plugin_woodpecker::WoodpeckerPlugin::new()));
27
28    registry
29}
30
31pub fn get_all_plugin_metadata() -> Vec<PluginMetadata> {
32    let registry = create_plugin_registry();
33    registry
34        .provider_types()
35        .iter()
36        .filter_map(|provider_type| registry.get(provider_type))
37        .map(|p| p.metadata().clone())
38        .collect()
39}
40
41pub fn create_plugin(provider_type: &str) -> Option<Box<dyn PluginTrait>> {
42    match provider_type {
43        "github" => Some(Box::new(pipedash_plugin_github::GitHubPlugin::new())),
44        "gitea" => Some(Box::new(pipedash_plugin_gitea::GiteaPlugin::new())),
45        "gitlab" => Some(Box::new(pipedash_plugin_gitlab::GitLabPlugin::new())),
46        "bitbucket" => Some(Box::new(pipedash_plugin_bitbucket::BitbucketPlugin::new())),
47        "buildkite" => Some(Box::new(pipedash_plugin_buildkite::BuildkitePlugin::new())),
48        "azure-devops" => Some(Box::new(
49            pipedash_plugin_azure_devops::AzureDevOpsPlugin::new(),
50        )),
51        "jenkins" => Some(Box::new(pipedash_plugin_jenkins::JenkinsPlugin::new())),
52        "tekton" => Some(Box::new(pipedash_plugin_tekton::TektonPlugin::new())),
53        "argocd" => Some(Box::new(pipedash_plugin_argocd::ArgocdPlugin::new())),
54        "fluxcd" => Some(Box::new(pipedash_plugin_fluxcd::FluxcdPlugin::new())),
55        "komodo" => Some(Box::new(pipedash_plugin_komodo::KomodoPlugin::new())),
56        "prow" => Some(Box::new(pipedash_plugin_prow::ProwPlugin::new())),
57        "coolify" => Some(Box::new(pipedash_plugin_coolify::CoolifyPlugin::new())),
58        "circleci" => Some(Box::new(pipedash_plugin_circleci::CircleCIPlugin::new())),
59        "woodpecker" => Some(Box::new(pipedash_plugin_woodpecker::WoodpeckerPlugin::new())),
60        _ => None,
61    }
62}