NAME

Darcs::Notify::Base - Base class for notifiers

SYNOPSIS

package Darcs::Notify::MySubclass;
use Darcs::Notify::Base;
use base 'Darcs::Notify::Base';

sub notify($$$$) {
    my ($self, $notify, $new, $unpull) = @_;
    print $self->{option1}, "\n";
    print $notify->repo_name, "\n";
    print "Added patches:\n";
    print "$_" for (@{$new});
    print "Unpulled patches:\n";
    print "$_" for (@{$unpull});
}

use Darcs::Notify;
Darcs::Notify->new(MySubclass => { option1 => 1,
                                   option2 => 2 })
    ->notify;

DESCRIPTION

This is the base class for making custom Darcs::Notify notifiers. Subclass this and make sure that your package name is in the Darcs::Notify hierarchy. Pass the last part of your package name to Darcs::Notify->new() to have it use your package. If your package is called Darcs::Notify::Something then you would pass something like Something => { my_option1 => 1, my_option2 => 2 }. Darcs::Notify->new() will load your subclass if it is not already loaded and call its new() function with the option hash that was passed to it.

FUNCTIONS

new(%options)

This instantiates your object. Generally you won't need to override this class, but you may want to in order to check that the options are valid, for instance.

The Darcs::Notify::Base->new() will put all the options passed to it into the $self blessed hash, but there is no requirement that your class has to work this way.

$self->notify($notify, [@new_patches], [@unpulled_patches])

This does the actual notifying. The subroutine defined in this module is just a stub and only prints some debugging information. Normally your subclass overrides this to do whatever notifications you'd like. See Darcs::Notify::Email which is the only subclass that comes with Darcs::Notify at the moment.

The first parameter passed is the $self hash ref. If you don't override the new() function, any options you pass to new() will end up in the $self hash ref.

The second parameter is a reference to the Darcs::Notify object. You can use this to query the repo_name, for instance.

The third parameter is a reference to an array of Darcs::Inventory::Patches that are new in the repository.

The fourth parameter is a reference to an array of Darcs::Inventory::Patches that have been unpulled (obliterated) from the repository.

SEE ALSO

darcs-notify, Darcs::Notify::Base, Darcs::Notify::Email, Darcs::Inventory::Patch

I also recommend looking at the source code for Darcs::Notify::Email as it is a subclass of Darcs::Notify::Base.

COPYRIGHT

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Copyright (C) 2007-2009 David Caldwell

AUTHOR

David Caldwell <david@porkrind.org>