From b6072e3ef37e45d27b963980298fed8386505727 Mon Sep 17 00:00:00 2001 From: Marc Wrobel Date: Mon, 11 Dec 2023 22:21:37 +0100 Subject: [PATCH] [plesk] Refactor script (#241) Make the script more readable, mostly by: - using the Product class, - removing the use of functions when unnecessary, - a little bit of renaming and documentation. --- src/plesk.py | 46 +++++++++++++++++----------------------------- 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/src/plesk.py b/src/plesk.py index 0914fc0d..d9c608b9 100644 --- a/src/plesk.py +++ b/src/plesk.py @@ -3,39 +3,27 @@ from common import http from common import dates from common import endoflife -URL = "https://docs.plesk.com/release-notes/obsidian/change-log" -PRODUCT = "plesk" +"""Fetches versions from Plesk's change log. +Only 18.0.20.3 and later will be picked up, as the format of the change log for 18.0.20 and 18.0.19 are different and +there is no entry for GA of version 18.0.18 and older.""" -def make_bs_request(url): - response = http.fetch_url(url) - return BeautifulSoup(response.text, features="html5lib") +product = endoflife.Product("plesk") +print(f"::group::{product.name}") +response = http.fetch_url("https://docs.plesk.com/release-notes/obsidian/change-log") +soup = BeautifulSoup(response.text, features="html5lib") +for release in soup.find_all("div", class_="changelog-entry--obsidian"): + version = release.h2.text.strip() + if not version.startswith('Plesk Obsidian 18'): + continue -# Only 18.0.20.3 and later will be picked up : -# - format of the title for 18.0.20 and 18.0.19 are different, -# - there is not entry for GA of version 18.0.18 and older. -def fetch_releases(): - result = {} + version = version.replace(' Update ', '.').replace('Plesk Obsidian ', '') + if ' ' in version: + continue - soup = make_bs_request(URL) - releases = soup.find_all("div", class_="changelog-entry--obsidian") - for release in releases: - version = release.h2.text.strip() - if not version.startswith('Plesk Obsidian 18'): - continue + date = dates.parse_date(release.p.text) + product.declare_version(version, date) - version = version.replace(' Update ', '.').replace('Plesk Obsidian ', '') - if ' ' in version: - continue - date = dates.parse_date(release.p.text).strftime("%Y-%m-%d") - result[version] = date - print(f"{version}: {date}") - - return result - - -print(f"::group::{PRODUCT}") -versions = fetch_releases() -endoflife.write_releases(PRODUCT, versions) +product.write() print("::endgroup::")