From: Chris W. <la...@us...> - 2005-03-17 06:04:20
|
Update of /cvsroot/openinteract/OpenInteract2/lib/OpenInteract2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2900 Modified Files: Repository.pm Log Message: add method to get just the package info (name, version, directory) without actually reading the package Index: Repository.pm =================================================================== RCS file: /cvsroot/openinteract/OpenInteract2/lib/OpenInteract2/Repository.pm,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** Repository.pm 6 Mar 2005 15:07:07 -0000 1.23 --- Repository.pm 17 Mar 2005 06:04:09 -0000 1.24 *************** *** 131,134 **** --- 131,149 ---- } + sub get_package_info { + my ( $self, $name ) = @_; + return undef unless ( $name ); + foreach my $pkg_info ( @{ $self->_package_info } ) { + if ( $pkg_info->{name} eq $name ) { + return { + name => $name, + version => $pkg_info->{version}, + directory => $pkg_info->{directory}, + }; + } + } + return undef; + } + sub fetch_all_packages { *************** *** 150,167 **** # } ! if ( my $old_package = $self->fetch_package( $package->name ) ) { ! eval { ! $self->remove_package( $old_package, { transient => 'yes' } ) ! }; ! if ( $@ ) { ! oi_error "Failed to add package '", $package->name, "' since ", ! "old version '", $old_package->version, "' was not ", ! "successfully removed: $@"; ! } } ! my %new_info = ( name => $package->name, ! version => $package->version, ! directory => $package->directory, ! installed => $package->installed_date || scalar localtime ); $self->_add_package_info( \%new_info ); unless ( $options->{transient} and $options->{transient} eq 'yes' ) { --- 165,178 ---- # } ! if ( my $old_info = $self->get_package_info( $package->name ) ) { ! $self->_remove_package_info( $old_info->{name}, { transient => 'yes' } ); ! $self->_remove_package_cache( $old_info->{name} ); } ! my %new_info = ( ! name => $package->name, ! version => $package->version, ! directory => $package->directory, ! installed => $package->installed_date || scalar localtime ! ); $self->_add_package_info( \%new_info ); unless ( $options->{transient} and $options->{transient} eq 'yes' ) { *************** *** 180,184 **** my ( $self, $package, $options ) = @_; return unless ( $package ); ! $self->_remove_package_info( $package->name ); unless ( $options->{transient} && 'yes' eq $options->{transient} ) { eval { $self->_save_repository }; --- 191,195 ---- my ( $self, $package, $options ) = @_; return unless ( $package ); ! $self->_remove_package_info( $package->{name} ); unless ( $options->{transient} && 'yes' eq $options->{transient} ) { eval { $self->_save_repository }; *************** *** 468,471 **** --- 479,487 ---- Returns: full path to the package directory + B<get_package_info( $package_name )> + + Returns a hashref with 'name', 'version' and 'directory' defined if + C<$package_name> in this repository. Otherwise returns C<undef>. + B<fetch_package( $package_name )> |