From 9e00044446b54acf0dbff1a11b191ae11b53a77b Mon Sep 17 00:00:00 2001 From: Marc Wrobel Date: Tue, 12 Dec 2023 07:41:19 +0100 Subject: [PATCH] [redhat-satellite] Refactor script (#244) Make the script more readable, mostly by: - using the Product class, - a little bit of renaming and documentation. --- src/redhat-satellite.py | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/src/redhat-satellite.py b/src/redhat-satellite.py index 335bd0fa..873c5043 100644 --- a/src/redhat-satellite.py +++ b/src/redhat-satellite.py @@ -1,36 +1,31 @@ import re from bs4 import BeautifulSoup -from common import http +from common import dates from common import endoflife +from common import http -"""Fetch versions with their dates from access.redhat.com. +"""Fetches Satellite versions from access.redhat.com. -A few of the older versions, such as 'Satellite 6.1 GA Release (Build 6.1.1)', -were ignored because too hard to parse. -""" +A few of the older versions, such as 'Satellite 6.1 GA Release (Build 6.1.1)', were ignored because too hard to parse.""" -URL = "https://access.redhat.com/articles/1365633" # https://regex101.com/r/m8aWXG/1 -regex = r"^Satellite (?P\d+\.\d+\.\d+([.-]\d+)?) ([Uu]pdate|[Rr]elease)$" +VERSION_PATTERN = re.compile(r"^Satellite (?P\d+\.\d+\.\d+([.-]\d+)?) ([Uu]pdate|[Rr]elease)$") -print("::group::redhat-satellite") -response = http.fetch_url(URL) +product = endoflife.Product("redhat-satellite") +print(f"::group::{product.name}") +response = http.fetch_url("https://access.redhat.com/articles/1365633") soup = BeautifulSoup(response.text, features="html5lib") -versions = {} for table in soup.findAll("tbody"): for tr in table.findAll("tr"): td_list = tr.findAll("td") - # Versions x.y GA are transformed to x.y.0 - version = td_list[0].get_text().replace(' GA', '.0').strip() - m = re.match(regex, version) - if m: - # Versions a.b.c-d are transformed to a.b.c.d - version = m["version"].replace('-', '.') - date = td_list[1].get_text().strip() - versions[version] = date - print(f"{version}: {date}") + version_str = td_list[0].get_text().replace(' GA', '.0').strip() # x.y GA => x.y.0 + version_match = VERSION_PATTERN.match(version_str) + if version_match: + version = version_match["version"].replace('-', '.') # a.b.c-d => a.b.c.d + date = dates.parse_date(td_list[1].get_text().strip()) + product.declare_version(version, date) -endoflife.write_releases('redhat-satellite', versions) +product.write() print("::endgroup::")