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(). 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 base class will put all the options passed to it into the $self blessed hash.

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

This function 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. Any options you pass to notify 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>