Perl6-Pugs

 view release on metacpan or  search on metacpan

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

package JIB::Package::Source;

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];
use Path::Class             ();

use Data::Dumper;
$Data::Dumper::Indent = 1;

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

    ### make it a P::C item
    $args->{file} = Path::Class::file( $file );

    while( my($acc,$val) = each %$args ) {
        $self->$acc( $val );
    }

    unless( $meta or $meta = $self->extract_meta_object ) {
        return;
    }
    
    $self->package( $self->meta->package );
    
    return $self;
}

=head2 $path = $pkg->file

Location of the source package

=head2 $meta = $pkg->meta

The JIB::Meta object associated with this package

=head2 $pkg->install( installation => INSTALLATION_OBJECT )

=cut

### XXX perl-ify
sub install {
    my $self = shift;
    my $conf = $self->config;
    my %hash = @_;
    
    my $inst;
    my $tmpl = {
        installation => { 
            required => 1, store => \$inst,
            allow => sub { UNIVERSAL::isa( shift(), 'JIB::Installation' ) } },
    };
    



( run in 3.346 seconds using v1.01-cache-2.11-cpan-98e64b0badf )