Perl6-Pugs

 view release on metacpan or  search on metacpan

misc/sixpan/JIB/lib/JIB/Package/Installed.pm  view on Meta::CPAN

package JIB::Package::Installed;

use strict;
use warnings;

use base 'JIB::Package';

use JIB::Constants;
use JIB::Config;
use JIB::Installation;

use File::Spec;
use File::Basename          qw[basename];
use Params::Check           qw[check];
use Log::Message::Simple    qw[:STD];
use YAML                    qw[LoadFile];



### only called form JIB::Package
sub new {
    my $self    = shift;
    my $conf    = $self->config;
    my %hash    = @_;
    
    my $meta; my $inst;
    my $tmpl = {
        meta => { 
            required    => 1, 
            store       => \$meta, 
            allow       => ISA_JIB_META, 
        },
        installation => { 
            required    => 1, 
            store       => \$inst,
            allow       => ISA_JIB_INSTALLATION ,
        },
    };
    
    my $args = check( $tmpl, \%hash ) 
                or error( Params::Check->last_error ), return;

    $self->mk_accessors( qw[files alternative installation] );
    
    while( my($acc,$val) = each %$args ) {
        $self->$acc( $val );
    }
    
    $self->package( $self->meta->package );
    
    ### XXX flesh out this format better
    {   my @files = eval {
            ### XXX CONFIG!!!!
            my $file = $inst->files_list( $meta->package );
            open my $fh, $file or die "Could not open '$file': $!";
            map { chomp; $_ } <$fh>;
        };
        $@ and error( "Could not load files list: $@" ), return;
        $self->files( \@files );
        
        my ($alt) = grep { $_->package eq $meta->package }
                        @{ $inst->registered_alternatives };
        $self->alternative( $alt );
    }
    
    return $self;
}

=head2 $files = $pkg->files

Returns an arrayref of files installed by this package

=head2 $alt = $pkg->alternative

Returns the JIB::Alternative object, if this package is a registered alternative



( run in 1.142 second using v1.01-cache-2.11-cpan-df04353d9ac )