feat: alpine packages feed reader (beta)
This commit is contained in:
parent
800c4c2ee3
commit
1f182df473
2 changed files with 36 additions and 6 deletions
31
config.py
31
config.py
|
|
@ -14,6 +14,26 @@ from issue_generator import FeedReader, GithubReader, GithubTagReader, PIPYReade
|
||||||
TIMEOUT
|
TIMEOUT
|
||||||
import _secrets
|
import _secrets
|
||||||
|
|
||||||
|
class AlpinePackageReader(FeedReader):
|
||||||
|
'''Custom feed reader for Alpine packages'''
|
||||||
|
def __init__(self, package: str, targets: IssuePoster):
|
||||||
|
super().__init__(package, "https://gitlab.alpinelinux.org/alpine/aports/-/commits/master.atom", targets)
|
||||||
|
self.regex = r'community/([^:]+): upgrade to (.+)'
|
||||||
|
self.package = package
|
||||||
|
|
||||||
|
def is_valid_item(self, entry) -> bool:
|
||||||
|
match = re.search(self.regex, entry.title)
|
||||||
|
return match and match.groups(1) == self.package
|
||||||
|
|
||||||
|
def entry_get_version(self, entry: dict[str, Any]) -> tuple[str, str]:
|
||||||
|
match = re.search(self.regex, entry.title)
|
||||||
|
if match and match.groups(1) == self.package:
|
||||||
|
return (match.groups(2),) * 2
|
||||||
|
raise RuntimeError(f"Checking version for package {self.package} in invalid entry titled: {entry.title}")
|
||||||
|
|
||||||
|
def entry_get_link(self, entry: dict[str, Any]) -> str:
|
||||||
|
return entry.id
|
||||||
|
|
||||||
|
|
||||||
class UDSClientReader(FeedReader):
|
class UDSClientReader(FeedReader):
|
||||||
'''Custom feed reader for UDSClient, whose version number appears in a .js file.'''
|
'''Custom feed reader for UDSClient, whose version number appears in a .js file.'''
|
||||||
|
|
@ -111,6 +131,17 @@ FEED_READERS = [
|
||||||
NCAppReader(app = "vigil-local", project = "valeriansaliou/vigil-local"),
|
NCAppReader(app = "vigil-local", project = "valeriansaliou/vigil-local"),
|
||||||
# yourls GHReleases YOURLS/YOURLS archpkgs/yourls
|
# yourls GHReleases YOURLS/YOURLS archpkgs/yourls
|
||||||
NCAppReader(app = "yourls", project = "YOURLS/YOURLS"),
|
NCAppReader(app = "yourls", project = "YOURLS/YOURLS"),
|
||||||
|
|
||||||
|
################################ Critical software in servers ################################
|
||||||
|
# zfs
|
||||||
|
GithubReader(name = "zfs-dkms", project = "openzfs/zfs",
|
||||||
|
targets = CGJForgejoPoster("kauron/solaris-packages")),
|
||||||
|
# yay GHReleases Jguer/yay aur?
|
||||||
|
GithubReader(name = "yay", project = "Jguer/yay",
|
||||||
|
targets = CGJForgejoPoster("kauron/solaris-packages")),
|
||||||
|
# qbittorrent-alpine
|
||||||
|
AlpinePackageReader(package = "qbittorrent",
|
||||||
|
targets = CGJForgejoPoster("kauron/solaris-packages")),
|
||||||
]
|
]
|
||||||
|
|
||||||
## PENDING:
|
## PENDING:
|
||||||
|
|
|
||||||
|
|
@ -166,6 +166,10 @@ class FeedReader:
|
||||||
self.etag_file = CONFIG_DIR + self.name + ".etag"
|
self.etag_file = CONFIG_DIR + self.name + ".etag"
|
||||||
self.beta_strings = [ "nightly", "beta", "alpha", "rc", "pr" ]
|
self.beta_strings = [ "nightly", "beta", "alpha", "rc", "pr" ]
|
||||||
|
|
||||||
|
def is_valid_item(self, entry) -> bool:
|
||||||
|
version = self.entry_get_version(entry)[0]
|
||||||
|
return all([beta not in version for beta in self.beta_strings])
|
||||||
|
|
||||||
def first_item(self) -> dict[str, Any] | None | int:
|
def first_item(self) -> dict[str, Any] | None | int:
|
||||||
'''Get the first item of the feed (newest)'''
|
'''Get the first item of the feed (newest)'''
|
||||||
if os.path.isfile(self.etag_file):
|
if os.path.isfile(self.etag_file):
|
||||||
|
|
@ -183,12 +187,7 @@ class FeedReader:
|
||||||
if len(feed.entries) == 0:
|
if len(feed.entries) == 0:
|
||||||
return None
|
return None
|
||||||
for entry in feed.entries:
|
for entry in feed.entries:
|
||||||
skip = False
|
if self.is_valid_item(entry):
|
||||||
for beta in self.beta_strings:
|
|
||||||
if beta in self.entry_get_version(entry)[0]:
|
|
||||||
skip = True
|
|
||||||
break
|
|
||||||
if not skip:
|
|
||||||
return entry
|
return entry
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue