Alien-CodePress

 view release on metacpan or  search on metacpan

lib/Alien/CodePress.pm  view on Meta::CPAN

# $Id$
# $Source$
# $Author$
# $HeadURL$
# $Revision$
# $Date$
package Alien::CodePress;

use strict;
use warnings;
use 5.00600;

use Carp;
use File::Spec;
use File::Copy      qw(copy);
use File::Path      qw(mkpath);
use File::Basename  qw(dirname);
use Archive::Extract;
use vars qw($VERSION);

use Alien::CodePress::Archive;

$VERSION = 1.03;

my @PROPERTIES = qw(
    path
);


__PACKAGE__->make_accessors(@PROPERTIES);


sub new {
    my ($class, $options_ref) = @_;
    my $self = { };

    bless $self, $class;

    $self->init_properties();
    $self->set_properties($options_ref);
   
    return $self;
}

sub version {
    return Alien::CodePress::Archive->version;
}

sub files {
    my ($self) = @_;
    my $path   = $self->get_path;
    my $source = File::Spec->catfile(
        $path,
        Alien::CodePress::Archive->filename()
    );

    my $ae = Archive::Extract->new( archive => $source );
    my @file_list = $ae->files;

    return @file_list;
}

sub install {
    my ($self, $destdir) = @_;
    my $path             = $self->get_path;
    $destdir           ||= File::Spec->curdir();

    my $source = File::Spec->catfile(
        $path,
        Alien::CodePress::Archive->filename()
    );

    my $ae = Archive::Extract->new( archive => $source );
    $ae->extract( to => $destdir );
        
    return;
}

sub init_path {
    my $module_filename =  __PACKAGE__ . q{.pm};
       $module_filename =~ s{::}{/}xmsg;
    my $base =  $INC{$module_filename};
       $base =~ s{\.pm\z}{}xms;

    return $base;
}



my %properties;
sub make_accessors {
    my ($class, @properties) = @_;
    
    for my $property (@properties) {
        no strict 'refs'; ## no critic
        my $get_fqdn   = join q{::}, $class, "get_$property";
        my $set_fqdn   = join q{::}, $class, "set_$property";



( run in 2.545 seconds using v1.01-cache-2.11-cpan-cdf2f3d4e48 )