diff --git a/swh/vault/cookers/directory.py b/swh/vault/cookers/directory.py index 70d9da0..ebcd346 100644 --- a/swh/vault/cookers/directory.py +++ b/swh/vault/cookers/directory.py @@ -1,27 +1,27 @@ # Copyright (C) 2016 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information import tarfile import tempfile from swh.model import hashutil from swh.vault.cookers.base import BaseVaultCooker from swh.vault.to_disk import DirectoryBuilder class DirectoryCooker(BaseVaultCooker): """Cooker to create a directory bundle """ CACHE_TYPE_KEY = 'directory' def check_exists(self): return not list(self.storage.directory_missing([self.obj_id])) def prepare_bundle(self): with tempfile.TemporaryDirectory(prefix='tmp-vault-directory-') as td: directory_builder = DirectoryBuilder( self.storage, td.encode(), self.obj_id) directory_builder.build() - tar = tarfile.open(fileobj=self.fileobj, mode='w') - tar.add(td, arcname=hashutil.hash_to_hex(self.obj_id)) + with tarfile.open(fileobj=self.fileobj, mode='w:gz') as tar: + tar.add(td, arcname=hashutil.hash_to_hex(self.obj_id)) diff --git a/swh/vault/cookers/revision_flat.py b/swh/vault/cookers/revision_flat.py index 0fc8579..242c998 100644 --- a/swh/vault/cookers/revision_flat.py +++ b/swh/vault/cookers/revision_flat.py @@ -1,32 +1,32 @@ # Copyright (C) 2016-2017 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information import tarfile import tempfile from pathlib import Path from swh.model import hashutil from swh.vault.cookers.base import BaseVaultCooker from swh.vault.to_disk import DirectoryBuilder class RevisionFlatCooker(BaseVaultCooker): """Cooker to create a revision_flat bundle """ CACHE_TYPE_KEY = 'revision_flat' def check_exists(self): return not list(self.storage.revision_missing([self.obj_id])) def prepare_bundle(self): with tempfile.TemporaryDirectory(prefix='tmp-vault-revision-') as td: root = Path(td) for revision in self.storage.revision_log([self.obj_id]): revdir = root / hashutil.hash_to_hex(revision['id']) revdir.mkdir() directory_builder = DirectoryBuilder( self.storage, str(revdir).encode(), revision['directory']) directory_builder.build() - tar = tarfile.open(fileobj=self.fileobj, mode='w') - tar.add(td, arcname=hashutil.hash_to_hex(self.obj_id)) + with tarfile.open(fileobj=self.fileobj, mode='w:gz') as tar: + tar.add(td, arcname=hashutil.hash_to_hex(self.obj_id))