blob: 15a08d10d77f7f870fc4935d5b43aaba94d22cdd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
package SlackBuild::Archive::Extractor;
use SlackBuild::Archive::Extractor::HTTP;
use SlackBuild::Archive::Extractor::Tar;
use Carp;
sub new {
croak "bad number of arguments" unless @_ == 4;
my ($class, $dn, $file, $destdir) = @_;
if ($dn->isa('SlackBuild::Download')) {
if ($dn->is_html) {
return new SlackBuild::Archive::Extractor::HTTP($dn->archive,
$file, $destdir);
} else {
return new SlackBuild::Archive::Extractor::Tar($dn->archive,
$file, $destdir);
}
}
return bless { _archive => $dn,
_tempfile => $file,
_destdir => $destdir }, $class;
}
sub logger {
my $self = shift;
$self->{_logger} //= Log::Log4perl::get_logger(ref($self))
}
sub archive { shift->{_archive} }
sub destdir { shift->{_destdir} }
sub tempfile { shift->{_tempfile} }
sub rewind { seek shift->tempfile, 0, 0 }
sub extract {
my $self = shift;
$self->logger->error('unrecognized download format');
return new SlackBuild::Download($self)
}
1;
|