⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 base.pm

📁 source of perl for linux application,
💻 PM
字号:
package CPANPLUS::Dist::Base;use strict;use vars    qw[@ISA $VERSION];@ISA =      qw[CPANPLUS::Dist];$VERSION =  '0.01';=head1 NAMECPANPLUS::Dist::Base - Base class for custom distribution classes=head1 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 );    }=head1 DESCRIPTIONCPANPLUS::Dist::Base functions as a base class for all customdistribution implementations. It does all the mundane work CPANPLUS would have done without a custom distribution, so youcan override just the parts you need to make your own implementationwork.=head1 FLOWBelow is a brief outline when and in which order methods in thisclass 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)=head1 METHODS=cut=head2 $bool = $Class->format_availableThis method is called when someone requests a module to be installedvia the superclass. This gives you the opportunity to check if allthe needed requirements to build and install this distribution havebeen met.For example, you might need a command line program, or a certain perlmodule 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 C<CPANPLUS::Dist::Base> implementation always returns true.=cut sub format_available { return 1 }=head2 $bool = $dist->initThis method is called just after the new dist object is set up andbefore the C<prepare> method is called. This is the time to set upthe object so it can be used with your class. For example, you might want to add extra accessors to the C<status>object, which you might do as follows:    $dist->status->mk_accessors( qw[my_implementation_accessor] );    The C<status> object is implemented as an instance of the C<Object::Accessor> class. Please refer to it's documentation for details.    Return true if the initialization was successul, and false if it wasnot.    The C<CPANPLUS::Dist::Base> implementation does not alter your object and always returns true.=cutsub init { return 1; }=head2 $bool = $dist->prepareThis runs the preparation step of your distribution. This step is meantto set up the environment so the C<create> step can create the actualdistribution(file). A C<prepare> call in the standard C<ExtUtils::MakeMaker> distribution would, for example, run C<perl Makefile.PL> to find the dependenciesfor a distribution. For a C<debian> distribution, this is where you would write all the metafiles required for the C<dpkg-*> tools.The C<CPANPLUS::Dist::Base> implementation simply calls the underlyingdistribution class (Typically C<CPANPLUS::Dist::MM> or C<CPANPLUS::Dist::Build>).Sets C<< $dist->status->prepared >> to the return value of this function.If you override this method, you should make sure to set this value.=cutsub prepare {     ### just in case you already did a create call for this module object    ### just via a different dist object    my $dist        = shift;    my $self        = $dist->parent;    my $dist_cpan   = $self->status->dist_cpan;    my $cb   = $self->parent;    my $conf = $cb->configure_object;    $dist->status->prepared( $dist_cpan->prepare( @_ ) );}=head2 $bool = $dist->createThis runs the creation step of your distribution. This step is meantto follow up on the C<prepare> call, that set up your environment so the C<create> step can create the actual distribution(file). A C<create> call in the standard C<ExtUtils::MakeMaker> distribution would, for example, run C<make> and C<make test> to build and testa distribution. For a C<debian> distribution, this is where you would create the actual C<.deb> file using C<dpkg>.The C<CPANPLUS::Dist::Base> implementation simply calls the underlyingdistribution class (Typically C<CPANPLUS::Dist::MM> or C<CPANPLUS::Dist::Build>).Sets C<< $dist->status->dist >> to the location of the created distribution.If you override this method, you should make sure to set this value.Sets C<< $dist->status->created >> to the return value of this function.If you override this method, you should make sure to set this value.=cutsub create {     ### just in case you already did a create call for this module object    ### just via a different dist object    my $dist        = shift;    my $self        = $dist->parent;    my $dist_cpan   = $self->status->dist_cpan;    $dist           = $self->status->dist   if      $self->status->dist;    $self->status->dist( $dist )            unless  $self->status->dist;    my $cb      = $self->parent;    my $conf    = $cb->configure_object;    my $format  = ref $dist;    ### make sure to set this variable, if the caller hasn't yet    ### just so we have some clue where the dist left off.    $dist->status->dist( $dist_cpan->status->distdir )        unless defined $dist->status->dist;    $dist->status->created( $dist_cpan->create(prereq_format => $format, @_) );}=head2 $bool = $dist->installThis runs the install step of your distribution. This step is meantto follow up on the C<create> call, which prepared a distribution(file)to install.A C<create> call in the standard C<ExtUtils::MakeMaker> distribution would, for example, run C<make install> to copy the distribution filesto their final destination. For a C<debian> distribution, this is where you would run C<dpkg --install> on the created C<.deb> file.The C<CPANPLUS::Dist::Base> implementation simply calls the underlyingdistribution class (Typically C<CPANPLUS::Dist::MM> or C<CPANPLUS::Dist::Build>).Sets C<< $dist->status->installed >> to the return value of this function.If you override this method, you should make sure to set this value.=cutsub install {     ### just in case you already did a create call for this module object    ### just via a different dist object    my $dist        = shift;    my $self        = $dist->parent;    my $dist_cpan   = $self->status->dist_cpan;        my $cb   = $self->parent;    my $conf = $cb->configure_object;    $dist->status->installed( $dist_cpan->install( @_ ) );}=head2 $bool = $dist->uninstallThis runs the uninstall step of your distribution. This step is meantto remove the distribution from the file system. A C<uninstall> call in the standard C<ExtUtils::MakeMaker> distribution would, for example, run C<make uninstall> to remove the distribution files the file system. For a C<debian> distribution, this is where you would run C<dpkg --uninstall PACKAGE>.The C<CPANPLUS::Dist::Base> implementation simply calls the underlyingdistribution class (Typically C<CPANPLUS::Dist::MM> or C<CPANPLUS::Dist::Build>).Sets C<< $dist->status->uninstalled >> to the return value of this function.If you override this method, you should make sure to set this value.=cutsub uninstall {     ### just in case you already did a create call for this module object    ### just via a different dist object    my $dist        = shift;    my $self        = $dist->parent;    my $dist_cpan   = $self->status->dist_cpan;        my $cb   = $self->parent;    my $conf = $cb->configure_object;    $dist->status->uninstalled( $dist_cpan->uninstall( @_ ) );}1;              # Local variables:# c-indentation-style: bsd# c-basic-offset: 4# indent-tabs-mode: nil# End:# vim: expandtab shiftwidth=4:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -