NAME
CPANPLUS::Dist::Base - Base class for custom distribution classes
SYNOPSIS
package CPANPLUS::Dist::MY_IMPLEMENTATION
use base 'CPANPLUS::Dist::Base';
    sub prepare {
        my $dist = shift;### do the 'standard' things $dist->SUPER::prepare( @_ ) or return;
        ### do MY_IMPLEMENTATION specific things
        ...
        ### don't forget to set the status!
        return $dist->status->prepared( $SUCCESS ? 1 : 0 );
    }DESCRIPTION
CPANPLUS::Dist::Base functions as a base class for all custom distribution implementations. It does all the mundane work CPANPLUS would have done without a custom distribution, so you can override just the parts you need to make your own implementation work.
FLOW
Below is a brief outline when and in which order methods in this class are called:
$Class->format_available; # can we use this class on this system?
$dist->init; # set up custom accessors, etc $dist->prepare; # find/write meta information $dist->create; # write the distribution file $dist->install; # install the distribution file
$dist->uninstall; # remove the distribution (OPTIONAL)
METHODS
$bool = $Class->format_available
This method is called when someone requests a module to be installed via the superclass. This gives you the opportunity to check if all the needed requirements to build and install this distribution have been met.
For example, you might need a command line program, or a certain perl module installed to do your job. Now is the time to check.
Simply return true if the request can proceed and false if it can not.
The CPANPLUS::Dist::Base
 implementation always returns true.
$bool = $dist->init
This method is called just after the new dist object is set up and
before the prepare
 method is called. This is the time to set up
the object so it can be used with your class.
For example, you might want to add extra accessors to the status
object, which you might do as follows:
$dist->status->mk_accessors( qw[my_implementation_accessor] );
The status
 object is implemented as an instance of the 
Object::Accessor
 class. Please refer to it's documentation for 
details.
Return true if the initialization was successul, and false if it was not.
The CPANPLUS::Dist::Base
 implementation does not alter your object 
and always returns true.
$bool = $dist->prepare
This runs the preparation step of your distribution. This step is meant
to set up the environment so the create
 step can create the actual
distribution(file). 
A prepare
 call in the standard ExtUtils::MakeMaker
 distribution 
would, for example, run perl Makefile.PL
 to find the dependencies
for a distribution. For a debian
 distribution, this is where you 
would write all the metafiles required for the dpkg-*
 tools.
The CPANPLUS::Dist::Base
 implementation simply calls the underlying
distribution class (Typically CPANPLUS::Dist::MM
 or 
CPANPLUS::Dist::Build
).
Sets $dist->status->prepared
 to the return value of this function.
If you override this method, you should make sure to set this value.
$bool = $dist->create
This runs the creation step of your distribution. This step is meant
to follow up on the prepare
 call, that set up your environment so 
the create
 step can create the actual distribution(file). 
A create
 call in the standard ExtUtils::MakeMaker
 distribution 
would, for example, run make
 and make test
 to build and test
a distribution. For a debian
 distribution, this is where you 
would create the actual .deb file using dpkg
.
The CPANPLUS::Dist::Base
 implementation simply calls the underlying
distribution class (Typically CPANPLUS::Dist::MM
 or 
CPANPLUS::Dist::Build
).
Sets $dist->status->dist
 to the location of the created 
distribution.
If you override this method, you should make sure to set this value.
Sets $dist->status->created
 to the return value of this function.
If you override this method, you should make sure to set this value.
$bool = $dist->install
This runs the install step of your distribution. This step is meant
to follow up on the create
 call, which prepared a distribution(file)
to install.
A create
 call in the standard ExtUtils::MakeMaker
 distribution 
would, for example, run make install
 to copy the distribution files
to their final destination. For a debian
 distribution, this is where 
you would run dpkg --install on the created .deb file.
The CPANPLUS::Dist::Base
 implementation simply calls the underlying
distribution class (Typically CPANPLUS::Dist::MM
 or 
CPANPLUS::Dist::Build
).
Sets $dist->status->installed
 to the return value of this function.
If you override this method, you should make sure to set this value.
$bool = $dist->uninstall
This runs the uninstall step of your distribution. This step is meant
to remove the distribution from the file system. 
A uninstall
 call in the standard ExtUtils::MakeMaker
 distribution 
would, for example, run make uninstall
 to remove the distribution 
files the file system. For a debian
 distribution, this is where you 
would run dpkg --uninstall PACKAGE.
The CPANPLUS::Dist::Base
 implementation simply calls the underlying
distribution class (Typically CPANPLUS::Dist::MM
 or 
CPANPLUS::Dist::Build
).
Sets $dist->status->uninstalled
 to the return value of this function.
If you override this method, you should make sure to set this value.
  
