diff --git a/src/freebsd-releases.py b/src/freebsd-releases.py new file mode 100644 index 00000000..d56701d0 --- /dev/null +++ b/src/freebsd-releases.py @@ -0,0 +1,28 @@ +import logging +import re + +from common import dates, http +from common.releasedata import ProductData, config_from_argv + +"""Fetches releases from https://www.freebsd.org.""" + +VERSION_AND_DATE_PATTERN = re.compile(r"^(Release )?(?P\d+\.\d+)\s*\((?P\w+ \d+, \d+)\)") + +config = config_from_argv() +with ProductData(config.product) as product_data: + html = http.fetch_html(config.url) + + for li in html.select("li"): + text = li.get_text(strip=True) + + match = VERSION_AND_DATE_PATTERN.search(text) + if not match: + logging.debug(f"Skipping {text}, does not match pattern") + continue + + logging.debug(f"Processing {text}") + release_name = match.group("release") + release = product_data.get_release(release_name) + + release_date = dates.parse_date(match.group("date")) + release.set_release_date(release_date)