Stop auto-updating release dates (#518)
Often the actual release date does not exactly match with the first version date of for a given release. Moreover the release date is simple to set : this is a one-time update that is not subject to change.
This commit is contained in:
@@ -64,7 +64,7 @@ class ProductFrontmatter:
|
|||||||
if self.path.is_file():
|
if self.path.is_file():
|
||||||
with self.path.open() as f:
|
with self.path.open() as f:
|
||||||
self.data = frontmatter.load(f)
|
self.data = frontmatter.load(f)
|
||||||
logging.info(f"loaded product data for {self.name} from {self.path}")
|
logging.debug(f"loaded product data for {self.name} from {self.path}")
|
||||||
else:
|
else:
|
||||||
logging.warning(f"no product data found for {self.name} at {self.path}")
|
logging.warning(f"no product data found for {self.name} at {self.path}")
|
||||||
|
|
||||||
|
|||||||
@@ -42,39 +42,10 @@ class ReleaseCycle:
|
|||||||
self.data[key] = value
|
self.data[key] = value
|
||||||
self.updated = True
|
self.updated = True
|
||||||
|
|
||||||
def update_with_version(self, version: str, date: datetime.date) -> None:
|
def update_latest_with_version(self, version: str, date: datetime.date) -> None:
|
||||||
logging.debug(f"will try to update {self} with {version} ({date})")
|
logging.debug(f"will try to update {self} with {version} ({date})")
|
||||||
self.matched = True
|
self.matched = True
|
||||||
self.__update_release_date(date)
|
|
||||||
self.__update_latest(version, date)
|
|
||||||
|
|
||||||
def latest(self) -> str | None:
|
|
||||||
return self.data.get("latest", None)
|
|
||||||
|
|
||||||
def includes(self, version: str) -> bool:
|
|
||||||
"""matches releases that are exact (such as 4.1 being the first release for the 4.1 release cycle)
|
|
||||||
or releases that include a dot just after the release cycle (4.1.*)
|
|
||||||
This is important to avoid edge cases like a 4.10.x release being marked under the 4.1 release cycle."""
|
|
||||||
if not version.startswith(self.name):
|
|
||||||
return False
|
|
||||||
|
|
||||||
if len(version) == len(self.name): # exact match
|
|
||||||
return True
|
|
||||||
|
|
||||||
char_after_prefix = version[len(self.name)]
|
|
||||||
return not char_after_prefix.isdigit()
|
|
||||||
|
|
||||||
def __update_release_date(self, date: datetime.date) -> None:
|
|
||||||
release_date = self.data.get("releaseDate", None)
|
|
||||||
if isinstance(release_date, str):
|
|
||||||
release_date = datetime.date.fromisoformat(release_date)
|
|
||||||
|
|
||||||
if release_date and release_date > date:
|
|
||||||
logging.info(f"{self} releaseDate updated from {release_date} to {date} using version data")
|
|
||||||
self.data["releaseDate"] = date
|
|
||||||
self.updated = True
|
|
||||||
|
|
||||||
def __update_latest(self, version: str, date: datetime.date) -> None:
|
|
||||||
old_latest = self.data.get("latest", None)
|
old_latest = self.data.get("latest", None)
|
||||||
old_latest_date = self.data.get("latestReleaseDate", None)
|
old_latest_date = self.data.get("latestReleaseDate", None)
|
||||||
|
|
||||||
@@ -103,6 +74,22 @@ class ReleaseCycle:
|
|||||||
self.data["latestReleaseDate"] = date
|
self.data["latestReleaseDate"] = date
|
||||||
self.updated = True
|
self.updated = True
|
||||||
|
|
||||||
|
def latest(self) -> str | None:
|
||||||
|
return self.data.get("latest", None)
|
||||||
|
|
||||||
|
def includes(self, version: str) -> bool:
|
||||||
|
"""matches releases that are exact (such as 4.1 being the first release for the 4.1 release cycle)
|
||||||
|
or releases that include a dot just after the release cycle (4.1.*)
|
||||||
|
This is important to avoid edge cases like a 4.10.x release being marked under the 4.1 release cycle."""
|
||||||
|
if not version.startswith(self.name):
|
||||||
|
return False
|
||||||
|
|
||||||
|
if len(version) == len(self.name): # exact match
|
||||||
|
return True
|
||||||
|
|
||||||
|
char_after_prefix = version[len(self.name)]
|
||||||
|
return not char_after_prefix.isdigit()
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return self.product + '#' + self.name
|
return self.product + '#' + self.name
|
||||||
|
|
||||||
@@ -166,7 +153,7 @@ class Product:
|
|||||||
for release in self.releases:
|
for release in self.releases:
|
||||||
if release.includes(name):
|
if release.includes(name):
|
||||||
version_matched = True
|
version_matched = True
|
||||||
release.update_with_version(name, date)
|
release.update_latest_with_version(name, date)
|
||||||
self.updated = self.updated or release.updated
|
self.updated = self.updated or release.updated
|
||||||
|
|
||||||
if not version_matched:
|
if not version_matched:
|
||||||
|
|||||||
Reference in New Issue
Block a user