Archive-Libarchive-Extract
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Archive/Libarchive/Extract.pm view on Meta::CPAN
package Archive::Libarchive::Extract;
use strict;
use warnings;
use Archive::Libarchive 0.04 qw( ARCHIVE_OK ARCHIVE_WARN ARCHIVE_EOF ARCHIVE_EXTRACT_TIME ARCHIVE_EXTRACT_PERM ARCHIVE_EXTRACT_ACL ARCHIVE_EXTRACT_FFLAGS );
use Ref::Util qw( is_plain_coderef is_plain_arrayref is_plain_scalarref is_ref );
use Carp ();
use File::chdir;
use Path::Tiny ();
use 5.020;
use experimental qw( signatures postderef );
# ABSTRACT: An archive extracting mechanism (using libarchive)
our $VERSION = '0.03'; # VERSION
sub new ($class, %options)
{
Carp::croak("Required option: one of filename or memory")
unless defined $options{filename} || defined $options{memory};
Carp::croak("Exactly one of filename or memory is required")
if defined $options{filename} && defined $options{memory};
if(defined $options{filename})
{
foreach my $filename (@{ is_plain_arrayref($options{filename}) ? $options{filename} : [$options{filename}] })
{
Carp::croak("Missing or unreadable: $filename")
unless -r $filename;
}
}
elsif(!(is_plain_scalarref $options{memory} && defined $options{memory}->$* && !is_ref $options{memory}->$*))
{
Carp::croak("Option memory must be a scalar reference to a plain non-reference scalar");
}
Carp::croak("Entry is not a code reference")
if defined $options{entry} && !is_plain_coderef $options{entry};
my $self = bless {
filename => delete $options{filename},
passphrase => delete $options{passphrase},
entry => delete $options{entry},
memory => delete $options{memory},
}, $class;
Carp::croak("Illegal options: @{[ sort keys %options ]}")
if %options;
return $self;
}
sub filename ($self)
{
return $self->{filename};
}
sub to ($self)
{
return $self->{to};
}
view all matches for this distributionview release on metacpan - search on metacpan
( run in 5.512 seconds using v1.00-cache-2.02-grep-82fe00e-cpan-9f2165ba459b )