NAME
CPANPLUS::Internals::Extract - internals for archive extraction
SYNOPSIS
### for source files ###
$self->_gunzip( file => 'foo.gz', output => 'blah.txt' );
### for modules/packages ###
$dir = $self->_extract( module => $modobj,
extractdir => '/some/where' );
DESCRIPTION
CPANPLUS::Internals::Extract extracts compressed files for CPANPLUS. It can do this by either a pure perl solution (preferred) with the use of Archive::Tar
and Compress::Zlib
, or with binaries, like gzip
and tar
.
The flow looks like this:
$cb->_extract
Delegate to Archive::Extract
METHODS
$dir = _extract( module => $modobj, [perl => '/path/to/perl', extractdir => '/path/to/extract/to', prefer_bin => BOOL, verbose => BOOL, force => BOOL] )
_extract
will take a module object and extract it to extractdir
if provided, or the default location which is obtained from your config.
The file name is obtained by looking at $modobj->status->fetch
and will be parsed to see if it's a tar or zip archive.
If it's a zip archive, __unzip
will be called, otherwise __untar
will be called. In the unlikely event the file is of neither format, an error will be thrown.
_extract
takes the following options:
- module
-
A
CPANPLUS::Module
object. This is required. - extractdir
-
The directory to extract the archive to. By default this looks something like: /CPANPLUS_BASE/PERL_VERSION/BUILD/MODULE_NAME
- prefer_bin
-
A flag indicating whether you prefer a pure perl solution, ie
Archive::Tar
orArchive::Zip
respectively, or a binary solution likeunzip
andtar
. - perl
-
The path to the perl executable to use for any perl calls. Also used to determine the build version directory for extraction.
- verbose
-
Specifies whether to be verbose or not. Defaults to your corresponding config entry.
- force
-
Specifies whether to force the extraction or not. Defaults to your corresponding config entry.
All other options are passed on verbatim to __unzip
or __untar
.
Returns the directory the file was extracted to on success and false on failure.