tar.py 1.4 KB
Newer Older
1 2
# -*- coding: utf-8 -*-
#
Jérémy Bobbio's avatar
Jérémy Bobbio committed
3
# diffoscope: in-depth comparison of files, archives, and directories
4
#
5
# Copyright © 2014-2015 Jérémy Bobbio <lunar@debian.org>
6
#
Jérémy Bobbio's avatar
Jérémy Bobbio committed
7
# diffoscope is free software: you can redistribute it and/or modify
8 9 10 11
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
Jérémy Bobbio's avatar
Jérémy Bobbio committed
12
# diffoscope is distributed in the hope that it will be useful,
13 14 15 16 17
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
18
# along with diffoscope.  If not, see <https://www.gnu.org/licenses/>.
19

20
import re
Chris Lamb's avatar
Chris Lamb committed
21

Jérémy Bobbio's avatar
Jérémy Bobbio committed
22
from diffoscope.difference import Difference
23

24
from .utils.file import File
25
from .utils.libarchive import LibarchiveContainer, list_libarchive
26

Mattia Rizzolo's avatar
Mattia Rizzolo committed
27

28 29
class TarContainer(LibarchiveContainer):
    pass
30

31

32
class TarFile(File):
33
    DESCRIPTION = "tape archives (.tar)"
34
    CONTAINER_CLASS = TarContainer
35
    FILE_TYPE_RE = re.compile(r'\btar archive\b')
36 37

    def compare_details(self, other, source=None):
38
        return [Difference.from_text_readers(list_libarchive(self.path),
Mattia Rizzolo's avatar
Mattia Rizzolo committed
39 40
                                             list_libarchive(other.path),
                                             self.path, other.path, source="file list")]