diff --git a/src/coldfusion.py b/src/coldfusion.py new file mode 100644 index 00000000..c708e440 --- /dev/null +++ b/src/coldfusion.py @@ -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::") diff --git a/src/common/dates.py b/src/common/dates.py index a72cad13..8e6ec632 100644 --- a/src/common/dates.py +++ b/src/common/dates.py @@ -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)