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 import datetime
def get_comparable_version_tuple_from_string(version_string):
return tuple(map(int, version_string.split(".")))
class PluginVersionMetadata: class PluginVersionMetadata:
def __init__(self, plugin_name, version_name, plugin_path, from_json={}): def __init__(self, plugin_name, version_name, plugin_path, from_json={}):
self.plugin_name = plugin_name self.plugin_name = plugin_name
@ -69,6 +73,20 @@ class PluginVersionMetadata:
md5sum = hashlib.md5(self._content).hexdigest() md5sum = hashlib.md5(self._content).hexdigest()
return md5sum 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: class CategoryVersionMetadata:
def __init__(self, category_metadata_base): def __init__(self, category_metadata_base):
@ -79,15 +97,14 @@ class CategoryVersionMetadata:
def get_plugins_having_null_version_values(self): def get_plugins_having_null_version_values(self):
for plugin_name, plugin_metadata in self.category_metadata["plugins"].items(): for plugin_name, plugin_metadata in self.category_metadata["plugins"].items():
latest_version_name, latest_version_metadata = tuple( for version_name, version_metadata in plugin_metadata["versions"].items():
plugin_metadata["versions"].items())[0] if version_metadata is None:
if latest_version_metadata is None: plugin_path = f"{os.path.join(self.category_metadata_base, f'{plugin_name}.py')}"
plugin_path = f"{os.path.join(self.category_metadata_base, f'{plugin_name}.py')}" yield PluginVersionMetadata(
yield PluginVersionMetadata( plugin_name,
plugin_name, version_name,
latest_version_name, plugin_path,
plugin_path, )
)
def get_plugins_having_diff_last_md5sum_version_values(self): def get_plugins_having_diff_last_md5sum_version_values(self):
for plugin_name, plugin_metadata in self.category_metadata["plugins"].items(): for plugin_name, plugin_metadata in self.category_metadata["plugins"].items():
@ -121,6 +138,7 @@ class CategoryVersionMetadata:
.set_commit_sha(commit_sha) .set_commit_sha(commit_sha)
.set_released_on(today) .set_released_on(today)
.set_md5sum() .set_md5sum()
.sort_versions()
.json .json
) )
return category_json return category_json