From: Scott Worley Date: Sat, 13 Jun 2020 07:20:09 +0000 (-0700) Subject: Split AliasSearchPath out of Channel X-Git-Tag: 2.0.0~26 X-Git-Url: http://git.scottworley.com/pinch/commitdiff_plain/2fa9cbea8f21396556223dbf07e01e6af87ff5e8 Split AliasSearchPath out of Channel --- diff --git a/pinch.py b/pinch.py index 2698226..34c63f1 100644 --- a/pinch.py +++ b/pinch.py @@ -1,3 +1,4 @@ +from abc import ABC, abstractmethod import argparse import configparser import filecmp @@ -85,12 +86,22 @@ class ChannelTableEntry(types.SimpleNamespace): url: str -class SearchPath(types.SimpleNamespace): +class SearchPath(types.SimpleNamespace, ABC): release_name: str + @abstractmethod + def pin(self, v: Verification, conf: configparser.SectionProxy) -> None: + pass -class Channel(SearchPath): + +class AliasSearchPath(SearchPath): alias_of: str + + def pin(self, v: Verification, conf: configparser.SectionProxy) -> None: + assert not hasattr(self, 'git_repo') + + +class Channel(SearchPath): channel_html: bytes channel_url: str forwarded_url: str @@ -101,10 +112,6 @@ class Channel(SearchPath): table: Dict[str, ChannelTableEntry] def pin(self, v: Verification, conf: configparser.SectionProxy) -> None: - if hasattr(self, 'alias_of'): - assert not hasattr(self, 'git_repo') - return - if hasattr(self, 'git_revision'): self.old_git_revision = self.git_revision del self.git_revision @@ -528,6 +535,8 @@ def git_revision_name(v: Verification, channel: Channel) -> str: def read_search_path(conf: configparser.SectionProxy) -> SearchPath: + if 'alias_of' in conf: + return AliasSearchPath(**dict(conf.items())) return Channel(**dict(conf.items()))