| import os |
| import zipfile |
| |
| from buildstream.utils import sha256sum |
| |
| from buildstream.testing import Repo |
| |
| |
| class Zip(Repo): |
| def create(self, directory): |
| archive = os.path.join(self.repo, "file.zip") |
| |
| old_dir = os.getcwd() |
| os.chdir(directory) |
| with zipfile.ZipFile(archive, "w") as zipfp: |
| for root, dirs, files in os.walk("."): |
| names = dirs + files |
| names = [os.path.join(root, name) for name in names] |
| |
| for name in names: |
| zipfp.write(name) |
| |
| os.chdir(old_dir) |
| |
| return sha256sum(archive) |
| |
| def source_config(self, ref=None): |
| archive = os.path.join(self.repo, "file.zip") |
| config = {"kind": "zip", "url": "file://" + archive, "directory": "", "base-dir": ""} |
| if ref is not None: |
| config["ref"] = ref |
| |
| return config |