diff options
-rw-r--r-- | gemato/profile.py | 20 | ||||
-rw-r--r-- | gemato/recursiveloader.py | 2 | ||||
-rw-r--r-- | tests/test_profile.py | 11 |
3 files changed, 33 insertions, 0 deletions
diff --git a/gemato/profile.py b/gemato/profile.py index 3681bf1..cd5d641 100644 --- a/gemato/profile.py +++ b/gemato/profile.py @@ -13,6 +13,14 @@ class DefaultProfile(object): correct behavior for a given use case. """ + def set_loader_options(self, loader): + """ + Alter loader @loader with profile-specific options. This + is called after applying the user-specified options, so it + should check them for None if overwriting is not desired. + """ + pass + def get_entry_type_for_path(self, path): """ Get Manifest entry type appropriate for the specified path. @@ -68,6 +76,18 @@ class EbuildRepositoryProfile(DefaultProfile): return True return False + def set_loader_options(self, loader): + if loader.hashes is None: + # layout.conf as of 2017-11-02 + loader.hashes = ['SHA256', 'SHA512', 'WHIRLPOOL'] + if loader.sort is None: + loader.sort = True + if loader.compress_watermark is None: + # GLEP 61 suggested value + loader.compress_watermark = 32768 + if loader.compress_format is None: + loader.compress_format = 'gz' + class BackwardsCompatEbuildRepositoryProfile(EbuildRepositoryProfile): """ diff --git a/gemato/recursiveloader.py b/gemato/recursiveloader.py index 0dde66f..d353f86 100644 --- a/gemato/recursiveloader.py +++ b/gemato/recursiveloader.py @@ -98,6 +98,8 @@ class ManifestRecursiveLoader(object): self.compress_watermark = compress_watermark self.compress_format = compress_format + self.profile.set_loader_options(self) + if self.verify_openpgp is None: self.verify_openpgp = True if self.sort is None: diff --git a/tests/test_profile.py b/tests/test_profile.py index b8cb02d..75da1d5 100644 --- a/tests/test_profile.py +++ b/tests/test_profile.py @@ -120,6 +120,17 @@ class EbuildRepositoryTests(TempDirTestCase): "type mismatch for {}".format(f)) return m + def test_set_loader_options(self): + m = gemato.recursiveloader.ManifestRecursiveLoader( + os.path.join(self.dir, 'Manifest'), + profile=self.PROFILE(), + allow_create=True) + self.assertIsNotNone(m.hashes) + self.assertTrue(m.sort) + self.assertIsNotNone(m.compress_watermark) + self.assertIsNotNone(m.compress_format) + + class BackwardsCompatEbuildRepositoryTests(EbuildRepositoryTests): PROFILE = gemato.profile.BackwardsCompatEbuildRepositoryProfile |