home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / perl / 5.10.0 / CPANPLUS / Module / Signature.pm < prev   
Encoding:
Perl POD Document  |  2009-06-26  |  1.5 KB  |  66 lines

  1. package CPANPLUS::Module::Signature;
  2.  
  3. use strict;
  4.  
  5.  
  6. use Cwd;
  7. use CPANPLUS::Error;
  8. use Params::Check               qw[check];
  9. use Module::Load::Conditional   qw[can_load];
  10.  
  11.  
  12. ### detached sig, not actually used afaik --kane ###
  13. #sub get_signature {
  14. #    my $self = shift;
  15. #
  16. #    my $clone = $self->clone;
  17. #    $clone->package( $self->package . '.sig' );
  18. #
  19. #    return $clone->fetch;
  20. #}
  21.  
  22. sub check_signature {
  23.     my $self = shift;
  24.     my $cb = $self->parent;
  25.     my $conf = $cb->configure_object;
  26.     my %hash = @_;
  27.  
  28.     my $verbose;
  29.     my $tmpl = {
  30.         verbose => {default => $conf->get_conf('verbose'), store => \$verbose},
  31.     };
  32.  
  33.     check( $tmpl, \%hash ) or return;
  34.  
  35.     my $dir = $self->status->extract or (
  36.                 error( loc( "Do not know what dir '%1' was extracted to; ".
  37.                             "Cannot check signature", $self->module ) ),
  38.                 return );
  39.  
  40.     my $cwd = cwd();
  41.     unless( $cb->_chdir( dir => $dir ) ) {
  42.         error(loc(  "Could not chdir to '%1', cannot verify distribution '%2'",
  43.                     $dir, $self->module ));
  44.         return;
  45.     }
  46.  
  47.  
  48.     ### check prerequisites
  49.     my $flag;
  50.     my $use_list = { 'Module::Signature' => '0.06' };
  51.     if( can_load( modules => $use_list, verbose => 1 ) ) {
  52.         my $rv = Module::Signature::verify();
  53.  
  54.         unless ($rv eq Module::Signature::SIGNATURE_OK() or
  55.             $rv eq Module::Signature::SIGNATURE_MISSING()
  56.         ) {
  57.             $flag++;    # whoops, bad sig
  58.         }
  59.     }
  60.  
  61.     $cb->_chdir( dir => $cwd );
  62.     return $flag ? 0 : 1;
  63. }
  64.  
  65. 1;
  66.