package Archive::Peek::Tar;
use Moo;
use Carp qw(confess);
use Archive::Tar;
extends 'Archive::Peek';

sub tar {
    my $self     = shift;
    my $filename = $self->filename;

    my $tar = Archive::Tar->new( $filename->stringify )
        || confess("Error reading $filename");
    return $tar;
}

sub files {
    my $self = shift;
    my $tar  = $self->tar;

    my @files
        = sort map { $_->full_path } grep { $_->is_file } $tar->get_files();
    return @files;
}

sub file {
    my ( $self, $filename ) = @_;
    my $tar = $self->tar;

    return $tar->get_content($filename);
}

1;
