Use OO-style plugins
This is mostly so we don't have to pass around common parameters like "db" and "config", and we don't have to check for the existence of methods. A plugin now looks like this: package Hydra::Plugin::TwitterNotification; use parent 'Hydra::Plugin'; sub buildFinished { my ($self, $build, $dependents) = @_; print STDERR "tweeting about build ", $build->id, "\n"; # Send tweet... # Hydra database is $self->{db}. }
This commit is contained in:
@ -17,6 +17,8 @@ my $db = Hydra::Model::DB->new();
|
||||
|
||||
my $config = getHydraConfig();
|
||||
|
||||
my @plugins = Hydra::Plugin->plugins(db => $db, config => $config);
|
||||
|
||||
|
||||
sub addBuildStepOutputs {
|
||||
my ($step) = @_;
|
||||
@ -79,10 +81,9 @@ sub failDependents {
|
||||
|
||||
sub notify {
|
||||
my ($build, $dependents) = @_;
|
||||
foreach my $plugin (Hydra::Plugin->plugins) {
|
||||
next unless $plugin->can('buildFinished');
|
||||
foreach my $plugin (@plugins) {
|
||||
eval {
|
||||
$plugin->buildFinished($db, $config, $build, []);
|
||||
$plugin->buildFinished($build, []);
|
||||
};
|
||||
if ($@) {
|
||||
print STDERR "$plugin->buildFinished: $@\n";
|
||||
|
Reference in New Issue
Block a user