Perl6-Pugs

 view release on metacpan or  search on metacpan

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

package JIB::Package;

use strict;
use warnings;
use base 'Object::Accessor';

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

use JIB::Package::Source;
use JIB::Package::Binary;
use JIB::Package::Installed;
use JIB::Package::Installable;

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

use Data::Dumper;

$Data::Dumper::Indent = 1;

my $Package_re = qr/^(\w+)     - # prefix
                    ([\w-]+?)  - # package name
                    ([\d.]+)   - # version
                    (\w+\+\S+) $ # authority
                /smx;

=head1 NAME

    JIB::Package

=head1 DESCRIPTION

Base class for:

    JIB::Package::Source
    JIB::Package::Binary
    JIB::Package::Installed

=head1 ACCESSORS 

=head2 package

Set the name of the full package package. For example:

    p5-foo-1-cpan+kane

=head1 METHODS

=head2 $pkg = JIB::Package->new( file => /path/to/jib | meta => META_OBJ );

Returns a JIB::Package::Source on a jib file, and a JIB::Package::Installed
on a META_OBJ.

XXX needs verification
XXX needs binary package recognition

=cut

{   my $acc = {
        file            => { allow => FILE_EXISTS },
        meta            => { allow => ISA_JIB_META },
        config          => { allow => ISA_JIB_CONFIG },
        package         => { allow => $Package_re, no_override => 1 },
    };

    ### acc is just for accessors, the others get added for our 
    ### param checking too
    my $tmpl = {
        %$acc,
        installation    => { allow => ISA_JIB_INSTALLATION },
        repository      => { allow => ISA_JIB_REPOSITORY },
    };

    sub new {



( run in 1.110 second using v1.01-cache-2.11-cpan-e1769b4cff6 )