package inc::Installer::Prerequisite; use strict; use base qw( inc::Installer inc::Installer::Logger inc::Installer::EnvObservableI ); { my %PREREQS; sub new { my $class = shift; my %options = @_; $class->fatal("No name defined!") if not $options{'name'}; my $self = { '_StandardName' => $options{'name'}, '_CPANID' => $options{'cpanid'}, '_PPDURI' => $options{'ppduri'}, '_GenericURI' => $options{'uri'}, '_SelfTest' => $options{'test'}, '_Required' => $options{'required'}, }; bless $self, $class; $PREREQS{ $self->StandardName } = $self; return $self; } sub Keys { return keys %PREREQS; } sub Check { my ( $self, $key ) = @_; $self = $PREREQS{$key}; return $self->SelfTest ? [ 'yes', $self->Required ] : [ 'no', $self->Required ]; } sub GetById { my ( $class, $id ) = @_; return $PREREQS{$id}; } } sub Required { my $self = shift; $self->{'_Required'} = shift if @_; return $self->{'_Required'}; } sub SelfTest { my $self = shift; my $test = $self->{'_SelfTest'}; return $self->$test; } sub StandardName { my $self = shift; $self->{'_StandardName'} = shift if @_; return $self->{'_StandardName'}; } sub CPANID { my $self = shift; $self->{'_CPANID'} = shift if @_; return $self->{'_CPANID'}; } sub PPDURI { my $self = shift; $self->{'_PPDURI'} = shift if @_; return $self->{'_PPDURI'}; } sub GenericURI { my $self = shift; $self->{'_GenericURI'} = shift if @_; return $self->{'_GenericURI'}; } 1;