package JIB::Package::Installable;
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, $inst, $file);
my $tmpl = {
meta => {
required => 1,
store => \$meta,
allow => ISA_JIB_META,
},
repository => {
required => 1,
store => \$inst,
allow => ISA_JIB_REPOSITORY,
},
### XXX this won't work over http mirrors etc!
file => {
required => 1,
store => \$file,
allow => FILE_EXISTS,
}
};
my $args = check( $tmpl, \%hash )
or error( Params::Check->last_error ), return;
$self->mk_accessors( qw[repository] );
while( my($acc,$val) = each %$args ) {
$self->$acc( $val );
}
$self->package( $self->meta->package );
return $self;
}
1;
# Local variables:
# c-indentation-style: bsd
# c-basic-offset: 4
# indent-tabs-mode: nil
# End:
# vim: expandtab shiftwidth=4: