diff --git a/src/lib/Hydra/Plugin.pm b/src/lib/Hydra/Plugin.pm index 8177d9ce..119d2738 100644 --- a/src/lib/Hydra/Plugin.pm +++ b/src/lib/Hydra/Plugin.pm @@ -12,11 +12,15 @@ sub new { return $self; } +sub isEnabled { + return 1; +} + sub instantiate { my ($class, %args) = @_; my $plugins = []; $args{plugins} = $plugins; - push @$plugins, $class->plugins(%args); + push @$plugins, grep { $_->isEnabled } $class->plugins(%args); return @$plugins; } diff --git a/src/lib/Hydra/Plugin/BitBucketStatus.pm b/src/lib/Hydra/Plugin/BitBucketStatus.pm index e02c6c71..f209c6f1 100644 --- a/src/lib/Hydra/Plugin/BitBucketStatus.pm +++ b/src/lib/Hydra/Plugin/BitBucketStatus.pm @@ -7,6 +7,11 @@ use JSON; use LWP::UserAgent; use Hydra::Helper::CatalystUtils; +sub isEnabled { + my ($self) = @_; + return $self->{config}->{enable_bitbucket_status} == 1; +} + sub toBitBucketState { my ($buildStatus) = @_; if ($buildStatus == 0) { diff --git a/src/lib/Hydra/Plugin/CircleCINotification.pm b/src/lib/Hydra/Plugin/CircleCINotification.pm index e42fb565..e9e8623d 100644 --- a/src/lib/Hydra/Plugin/CircleCINotification.pm +++ b/src/lib/Hydra/Plugin/CircleCINotification.pm @@ -7,6 +7,11 @@ use LWP::UserAgent; use Hydra::Helper::CatalystUtils; use JSON; +sub isEnabled { + my ($self) = @_; + return defined $self->{config}->{circleci}; +} + sub buildFinished { my ($self, $build, $dependents) = @_; my $cfg = $self->{config}->{circleci}; diff --git a/src/lib/Hydra/Plugin/CoverityScan.pm b/src/lib/Hydra/Plugin/CoverityScan.pm index 924111f4..1ee60843 100644 --- a/src/lib/Hydra/Plugin/CoverityScan.pm +++ b/src/lib/Hydra/Plugin/CoverityScan.pm @@ -6,6 +6,11 @@ use File::Basename; use LWP::UserAgent; use Hydra::Helper::CatalystUtils; +sub isEnabled { + my ($self) = @_; + return defined $self->{config}->{coverityscan}; +} + sub buildFinished { my ($self, $b, $dependents) = @_; diff --git a/src/lib/Hydra/Plugin/EmailNotification.pm b/src/lib/Hydra/Plugin/EmailNotification.pm index c2887631..9c2639d1 100644 --- a/src/lib/Hydra/Plugin/EmailNotification.pm +++ b/src/lib/Hydra/Plugin/EmailNotification.pm @@ -9,6 +9,10 @@ use Hydra::Helper::Nix; use Hydra::Helper::CatalystUtils; use Hydra::Helper::Email; +sub isEnabled { + my ($self) = @_; + return $self->{config}->{email_notification} == 1; +} my $template = <{config}->{email_notification} // 0; - die unless $build->finished; # Figure out to whom to send notification for each build. For diff --git a/src/lib/Hydra/Plugin/GithubStatus.pm b/src/lib/Hydra/Plugin/GithubStatus.pm index 59b0dc06..7db6bb52 100644 --- a/src/lib/Hydra/Plugin/GithubStatus.pm +++ b/src/lib/Hydra/Plugin/GithubStatus.pm @@ -8,6 +8,11 @@ use LWP::UserAgent; use Hydra::Helper::CatalystUtils; use List::Util qw(max); +sub isEnabled { + my ($self) = @_; + return defined $self->{config}->{githubstatus}; +} + sub toGithubState { my ($buildStatus) = @_; if ($buildStatus == 0) { diff --git a/src/lib/Hydra/Plugin/GitlabStatus.pm b/src/lib/Hydra/Plugin/GitlabStatus.pm index 4aef2f09..55c01472 100644 --- a/src/lib/Hydra/Plugin/GitlabStatus.pm +++ b/src/lib/Hydra/Plugin/GitlabStatus.pm @@ -16,6 +16,11 @@ use List::Util qw(max); # - gitlab_project_id => ID of the project in Gitlab, i.e. in the above # case the ID in gitlab of "nixexprs" +sub isEnabled { + my ($self) = @_; + return defined $self->{config}->{gitlab_authorization}; +} + sub toGitlabState { my ($status, $buildStatus) = @_; if ($status == 0) { diff --git a/src/lib/Hydra/Plugin/HipChatNotification.pm b/src/lib/Hydra/Plugin/HipChatNotification.pm index d8e907f1..7df39593 100644 --- a/src/lib/Hydra/Plugin/HipChatNotification.pm +++ b/src/lib/Hydra/Plugin/HipChatNotification.pm @@ -5,6 +5,11 @@ use parent 'Hydra::Plugin'; use LWP::UserAgent; use Hydra::Helper::CatalystUtils; +sub isEnabled { + my ($self) = @_; + return defined $self->{config}->{hipchat}; +} + sub buildFinished { my ($self, $build, $dependents) = @_; diff --git a/src/lib/Hydra/Plugin/InfluxDBNotification.pm b/src/lib/Hydra/Plugin/InfluxDBNotification.pm index bef83d1c..89732e3b 100644 --- a/src/lib/Hydra/Plugin/InfluxDBNotification.pm +++ b/src/lib/Hydra/Plugin/InfluxDBNotification.pm @@ -7,6 +7,11 @@ use HTTP::Request; use LWP::UserAgent; # use Hydra::Helper::CatalystUtils; +sub isEnabled { + my ($self) = @_; + return defined $self->{config}->{influxdb}; +} + sub toBuildStatusDetailed { my ($buildStatus) = @_; if ($buildStatus == 0) { diff --git a/src/lib/Hydra/Plugin/RunCommand.pm b/src/lib/Hydra/Plugin/RunCommand.pm index ca2140c5..f7ca45a9 100644 --- a/src/lib/Hydra/Plugin/RunCommand.pm +++ b/src/lib/Hydra/Plugin/RunCommand.pm @@ -5,6 +5,11 @@ use parent 'Hydra::Plugin'; use experimental 'smartmatch'; use JSON; +sub isEnabled { + my ($self) = @_; + return defined $self->{config}->{runcommand}; +} + sub configSectionMatches { my ($name, $project, $jobset, $job) = @_; diff --git a/src/lib/Hydra/Plugin/S3Backup.pm b/src/lib/Hydra/Plugin/S3Backup.pm index a6d3ac85..346cf239 100644 --- a/src/lib/Hydra/Plugin/S3Backup.pm +++ b/src/lib/Hydra/Plugin/S3Backup.pm @@ -14,6 +14,11 @@ use Nix::Store; use Hydra::Model::DB; use Hydra::Helper::CatalystUtils; +sub isEnabled { + my ($self) = @_; + return defined $self->{config}->{s3backup}; +} + my $client; my %compressors = ( xz => "| $Nix::Config::xz", diff --git a/src/lib/Hydra/Plugin/SlackNotification.pm b/src/lib/Hydra/Plugin/SlackNotification.pm index cffb0d5f..6ee249c8 100644 --- a/src/lib/Hydra/Plugin/SlackNotification.pm +++ b/src/lib/Hydra/Plugin/SlackNotification.pm @@ -7,6 +7,11 @@ use LWP::UserAgent; use Hydra::Helper::CatalystUtils; use JSON; +sub isEnabled { + my ($self) = @_; + return defined $self->{config}->{slack}; +} + sub renderDuration { my ($build) = @_; my $duration = $build->stoptime - $build->starttime;