[plesk] Add automation (closes #79)
Only 18.0.20.3 and later are picked up : - format of the title for 18.0.20 and 18.0.19 are different, - there is not entry for GA of versions 18.0.18 and older. Co-authored-by: Marc Wrobel <marc.wrobel@gmail.com>
This commit is contained in:
53
src/plesk.py
Normal file
53
src/plesk.py
Normal file
@@ -0,0 +1,53 @@
|
||||
import json
|
||||
from datetime import datetime
|
||||
import urllib.request
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
URL = "https://docs.plesk.com/release-notes/obsidian/change-log"
|
||||
PRODUCT = "plesk"
|
||||
|
||||
|
||||
def make_bs_request(url):
|
||||
req = urllib.request.Request(url)
|
||||
with urllib.request.urlopen(req, timeout=5) as response:
|
||||
return BeautifulSoup(response.read(), features="html5lib")
|
||||
|
||||
|
||||
# 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 = {}
|
||||
|
||||
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
|
||||
|
||||
version = version.replace(' Update ', '.').replace('Plesk Obsidian ', '')
|
||||
if ' ' in version:
|
||||
continue
|
||||
date = datetime.strptime(release.p.text.strip(), '%d %B %Y').strftime("%Y-%m-%d")
|
||||
result[version] = date
|
||||
print(f"{version}: {date}")
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def main():
|
||||
print(f"::group::{PRODUCT}")
|
||||
|
||||
releases = fetch_releases()
|
||||
with open(f"releases/{PRODUCT}.json", "w") as f:
|
||||
f.write(json.dumps(dict(
|
||||
# sort by date then version (desc)
|
||||
sorted(releases.items(), key=lambda x: (x[1], x[0]), reverse=True)
|
||||
), indent=2))
|
||||
|
||||
print("::endgroup::")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user