FeedReader: now able to post multiple issues on a new version
This commit is contained in:
parent
7c5e429ae0
commit
11c3103e3b
2 changed files with 30 additions and 27 deletions
|
|
@ -157,11 +157,11 @@ class ForgejoPoster(IssuePoster):
|
|||
class FeedReader:
|
||||
'''Class to read an RSS/Atom feed and post an issue if a new version is found.'''
|
||||
|
||||
def __init__(self, name: str, url: str, target: IssuePoster):
|
||||
def __init__(self, name: str, url: str, targets: list[IssuePoster]):
|
||||
'''Create a new feed reader'''
|
||||
self.name = name
|
||||
self.url = url
|
||||
self.target = target
|
||||
self.targets = targets if type(targets) == list else [targets]
|
||||
self.version_file = CONFIG_DIR + self.name
|
||||
self.etag_file = CONFIG_DIR + self.name + ".etag"
|
||||
self.beta_strings = [ "nightly", "beta", "alpha", "rc", "pr" ]
|
||||
|
|
@ -223,10 +223,14 @@ class FeedReader:
|
|||
if match:
|
||||
return False
|
||||
# Match 2: with repository issues
|
||||
if not self.target.issue_exists(self.name, version):
|
||||
# Post the issue
|
||||
if not self.target.post_issue(self.name, version, link):
|
||||
return False
|
||||
issues_posted = True
|
||||
for target in self.targets:
|
||||
if not target.issue_exists(self.name, version):
|
||||
# Post the issue
|
||||
if not target.post_issue(self.name, version, link):
|
||||
issues_posted = False
|
||||
if not issues_posted:
|
||||
return False
|
||||
# Save to disk
|
||||
if not os.path.isdir(CONFIG_DIR):
|
||||
os.makedirs(CONFIG_DIR)
|
||||
|
|
@ -238,9 +242,9 @@ class FeedReader:
|
|||
class PIPYReader(FeedReader):
|
||||
'''Reader specialized in the PIPY repository.'''
|
||||
|
||||
def __init__(self, name: str, package: str, target: IssuePoster):
|
||||
def __init__(self, name: str, package: str, targets: IssuePoster):
|
||||
'''Create a new PIPY reader for the given package.'''
|
||||
super().__init__(name, f"https://pypi.org/rss/project/{package}/releases.xml", target)
|
||||
super().__init__(name, f"https://pypi.org/rss/project/{package}/releases.xml", targets)
|
||||
|
||||
def entry_get_version(self, entry: dict[str, Any]) -> tuple[str, str]:
|
||||
return entry.title, entry.title
|
||||
|
|
@ -252,9 +256,9 @@ class PIPYReader(FeedReader):
|
|||
class GithubTagReader(FeedReader):
|
||||
'''Reader specialized in GitHub Tags Atom feed.'''
|
||||
|
||||
def __init__(self, name: str, project: str, target: IssuePoster):
|
||||
def __init__(self, name: str, project: str, targets: IssuePoster):
|
||||
'''Create a new GitHub Tags reader for the given project.'''
|
||||
super().__init__(name, f"https://github.com/{project}/tags.atom", target)
|
||||
super().__init__(name, f"https://github.com/{project}/tags.atom", targets)
|
||||
|
||||
def entry_get_version(self, entry: dict[str, Any]) -> tuple[str, str]:
|
||||
return entry.title, str(entry.id)
|
||||
|
|
@ -266,8 +270,8 @@ class GithubTagReader(FeedReader):
|
|||
class GithubReader(GithubTagReader):
|
||||
'''Reader specialized in GitHub releases' Atom feed.'''
|
||||
|
||||
def __init__(self, name: str, project: str, target: IssuePoster):
|
||||
super().__init__(name, project, target)
|
||||
def __init__(self, name: str, project: str, targets: IssuePoster):
|
||||
super().__init__(name, project, targets)
|
||||
self.url = f"https://github.com/{project}/releases.atom"
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue