[latest.py] Process version data before release data

Release data takes priority over version data: release data is always exact, whereas version data is computed.
This commit is contained in:
Marc Wrobel
2024-08-03 08:40:20 +02:00
parent b7ba7cc528
commit e5507a9dcc

View File

@@ -36,14 +36,14 @@ class ReleaseCycle:
old_value = self.data.get(key, None)
if old_value != value:
logging.info(f"{self} {key} updated from {old_value} to {value}")
logging.info(f"{self} {key} updated from {old_value} to {value} using release data")
self.data[key] = value
self.updated = True
def update_with_version(self, version: str, date: datetime.date) -> None:
logging.debug(f"will try to update {self} with {version} ({date})")
self.matched = True
self.__update_release_date(version, date)
self.__update_release_date(date)
self.__update_latest(version, date)
def latest(self) -> str | None:
@@ -67,10 +67,10 @@ class ReleaseCycle:
or char_after_prefix.isalpha() # build number: prefix = 1.1.0, r = 1.1.0r (ex. openssl)
)
def __update_release_date(self, version: str, date: datetime.date) -> None:
def __update_release_date(self, date: datetime.date) -> None:
release_date = self.data.get("releaseDate", None)
if release_date and release_date > date:
logging.info(f"{self} release date updated from {release_date} to {date} ({version})")
logging.info(f"{self} releaseDate updated from {release_date} to {date} using version data")
self.data["releaseDate"] = date
self.updated = True
@@ -80,22 +80,22 @@ class ReleaseCycle:
update_detected = False
if not old_latest:
logging.info(f"{self} latest date updated to {version} ({date}) (no prior latest version)")
logging.info(f"{self} latest set to {version} ({date}) using version data")
update_detected = True
elif old_latest == version and old_latest_date != date:
logging.info(f"{self} latest date updated from {old_latest_date} to {date}")
logging.info(f"{self} latestReleaseDate updated from {old_latest_date} to {date} using version data")
update_detected = True
else:
try: # Do our best attempt at comparing the version numbers
if Version(old_latest) < Version(version):
logging.info(f"{self} latest updated from {old_latest} ({old_latest_date}) to {version} ({date})")
logging.info(f"{self} latest updated from {old_latest} ({old_latest_date}) to {version} ({date}) using version data")
update_detected = True
except InvalidVersion: # If we can't compare the version numbers, compare the dates
logging.debug(f"could not compare {old_latest} with {version} for {self}, comparing dates instead")
if old_latest_date < date:
logging.info(f"{self} latest updated from {old_latest} ({old_latest_date}) to {version} ({date})")
logging.info(f"{self} latest updated from {old_latest} ({old_latest_date}) to {version} ({date}) using version data")
update_detected = True
if update_detected:
@@ -198,10 +198,13 @@ def update_product(name: str, product_dir: Path, releases_dir: Path, output: Git
product.upgrade_structure()
if product.release_data:
for release_data in product.release_data.get("releases", {}).values():
product.process_release(release_data)
for version_data in product.release_data.get("versions", {}).values():
product.process_version(version_data)
# Do not move: release data has priority over version data.
for release_data in product.release_data.get("releases", {}).values():
product.process_release(release_data)
product.check_latest()
if product.updated: