ci: sort plugin versions

This commit is contained in:
Rikko 2022-10-10 21:43:08 +05:30
parent a9695e1622
commit a2a7d87c1c

View file

@ -6,6 +6,10 @@ import re
import datetime
def get_comparable_version_tuple_from_string(version_string):
return tuple(map(int, version_string.split(".")))
class PluginVersionMetadata:
def __init__(self, plugin_name, version_name, plugin_path, from_json={}):
self.plugin_name = plugin_name
@ -69,6 +73,20 @@ class PluginVersionMetadata:
md5sum = hashlib.md5(self._content).hexdigest()
return md5sum
def sort_versions(self):
if self._content is None:
with open(self.plugin_path, "rb") as fin:
self._content = fin.read()
versions = self.json["plugins"][self.plugin_name]["versions"]
sorted_versions = dict(sorted(
tuple(versions.items()),
key=lambda version: get_comparable_version_tuple_from_string(version[0]),
reverse=True,
))
self.json["plugins"][self.plugin_name]["versions"] = sorted_versions
return self
class CategoryVersionMetadata:
def __init__(self, category_metadata_base):
@ -79,15 +97,14 @@ class CategoryVersionMetadata:
def get_plugins_having_null_version_values(self):
for plugin_name, plugin_metadata in self.category_metadata["plugins"].items():
latest_version_name, latest_version_metadata = tuple(
plugin_metadata["versions"].items())[0]
if latest_version_metadata is None:
plugin_path = f"{os.path.join(self.category_metadata_base, f'{plugin_name}.py')}"
yield PluginVersionMetadata(
plugin_name,
latest_version_name,
plugin_path,
)
for version_name, version_metadata in plugin_metadata["versions"].items():
if version_metadata is None:
plugin_path = f"{os.path.join(self.category_metadata_base, f'{plugin_name}.py')}"
yield PluginVersionMetadata(
plugin_name,
version_name,
plugin_path,
)
def get_plugins_having_diff_last_md5sum_version_values(self):
for plugin_name, plugin_metadata in self.category_metadata["plugins"].items():
@ -121,6 +138,7 @@ class CategoryVersionMetadata:
.set_commit_sha(commit_sha)
.set_released_on(today)
.set_md5sum()
.sort_versions()
.json
)
return category_json