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 )