[coldfusion] Add automation (#172)

Co-authored-by: Marc Wrobel <marc.wrobel@gmail.com>
This commit is contained in:
Nemo
2023-11-27 02:08:23 +05:30
committed by GitHub
parent 9dfd8f4f6e
commit d7b0de3e17
2 changed files with 35 additions and 3 deletions

33
src/coldfusion.py Normal file
View File

@@ -0,0 +1,33 @@
import re
from bs4 import BeautifulSoup
from common import dates
from common import endoflife
URLS = [
"https://helpx.adobe.com/coldfusion/kb/coldfusion-10-updates.html",
"https://helpx.adobe.com/coldfusion/kb/coldfusion-11-updates.html",
"https://helpx.adobe.com/coldfusion/kb/coldfusion-2016-updates.html",
"https://helpx.adobe.com/coldfusion/kb/coldfusion-2018-updates.html",
"https://helpx.adobe.com/coldfusion/kb/coldfusion-2021-updates.html",
"https://helpx.adobe.com/coldfusion/kb/coldfusion-2023-updates.html"
]
PRODUCT = "coldfusion"
REGEX = r"[r|R]elease [d|D]ate[,|:]? (.*?)\).*?Build Number: (.*?)$"
print(f"::group::{PRODUCT}")
versions = {}
for response in endoflife.fetch_urls(URLS):
soup = BeautifulSoup(response.text, features="html5lib")
for p in soup.findAll("div", class_="text"):
text = p.get_text().strip().replace('\xa0', ' ')
matches = re.findall(REGEX, text, re.DOTALL | re.MULTILINE)
for m in matches:
date = dates.parse_date(m[0]).strftime("%Y-%m-%d")
version = m[1].strip().replace(",",".")
versions[version] = date
print(f"{version}: {date}")
endoflife.write_releases(PRODUCT, versions)
print("::endgroup::")

View File

@@ -3,8 +3,6 @@ import calendar
def parse_date(text, formats=frozenset([
"%B %d, %Y", # January 1, 2020
"%b %d, %Y", # Jan 1, 2020
"%B %d %Y", # January 1 2020
"%b %d %Y", # Jan 1 2020
"%d %B %Y", # 1 January 2020
@@ -33,13 +31,14 @@ def parse_datetime(text, formats=frozenset([
"%Y-%m-%d %H:%M:%S", # 2023-05-01 08:32:34
"%Y-%m-%dT%H:%M:%S", # 2023-05-01T08:32:34
"%Y-%m-%d %H:%M:%S %z", # 2023-05-01 08:32:34 +0900
"%a, %d %b %Y %H:%M:%S %Z", # Wed, 01 Jan 2020 00:00:00 GMT
"%a %d %b %Y %H:%M:%S %Z", # Wed, 01 Jan 2020 00:00:00 GMT
"%Y-%m-%dT%H:%M:%S%z", # 2023-05-01T08:32:34+0900
]), to_utc=True) -> datetime:
"""Parse a given text representing a datetime using a list of formats,
optionally converting it to UTC.
"""
text = text.strip()
text = text.replace(", ", " ") # so that we don't have to deal with commas in formats
for fmt in formats:
try:
date = datetime.strptime(text, fmt)