Skip to content

Commit fc0bb01

Browse files
committed
add
1 parent 3eb469a commit fc0bb01

File tree

3 files changed

+40
-22
lines changed

3 files changed

+40
-22
lines changed

ci/src/_utils.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
import re
66
import os
77

8+
# If adding a third-party library here, check CI workflows Python files
9+
# that are dependant on this and require pip install.
10+
811
# path
912
utils_path = Path(__file__).resolve()
1013

@@ -51,6 +54,10 @@ def plugin_reader() -> P:
5154

5255
return manifests
5356

57+
def save_plugins_json_file(content: list[dict[str]]) -> None:
58+
with open("plugins.json", "w", encoding="utf-8") as f:
59+
json.dump(content, f, indent=4, ensure_ascii=False)
60+
5461
def get_plugin_file_paths() -> list[str]:
5562
return [os.path.join(plugin_dir, filename) for filename in get_plugin_filenames()]
5663

@@ -66,7 +73,7 @@ def plugin_writer(content: P):
6673
for plugin in content:
6774
with open(plugin_dir / f"{plugin[plugin_name]}-{plugin[id_name]}.json", "w", encoding="utf-8") as f:
6875
json.dump(plugin, f, indent=4)
69-
76+
7077
def etags_writer(content: ETagsType):
7178
with open(etag_file, "w", encoding="utf-8") as f:
7279
json.dump(content, f, indent=4)
@@ -100,3 +107,18 @@ def get_file_plugins_json_info(required_key: str = "") -> list[dict[str, str]]:
100107
return data
101108

102109
return [{required_key: plugin[required_key]} for plugin in data]
110+
111+
def get_new_plugin_submission_ids() -> list[str]:
112+
plugins_json_ids = [item["ID"] for item in get_file_plugins_json_info("ID")]
113+
existing_plugin_file_ids = [info["ID"] for info in plugin_reader()]
114+
115+
new_ids = []
116+
117+
for id in existing_plugin_file_ids:
118+
# plugins.json would not contain new submission's ID.
119+
if id in plugins_json_ids:
120+
continue
121+
122+
new_ids.append(id)
123+
124+
return new_ids

ci/src/merge-manifest.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
1-
import glob
2-
import json
1+
import sys
2+
from _utils import get_new_plugin_submission_ids, plugin_reader, save_plugins_json_file
33

4-
if __name__ == "__main__":
5-
plugins = sorted(glob.glob("plugins/*.json"))
4+
def get_all_plugins() -> list[dict[str]]:
5+
return plugin_reader()
6+
7+
def get_new_plugins() -> list[dict[str]]:
8+
ids = get_new_plugin_submission_ids()
9+
plugins_from_plugins_dir = plugin_reader()
610

7-
manifests = []
11+
return [plugins_from_plugins_dir[id] for id in ids]
812

9-
for plugin in plugins:
10-
with open(plugin, "r", encoding="utf-8") as f:
11-
manifest = json.load(f)
12-
manifests.append(manifest)
1313

14-
with open("plugins.json", "w", encoding="utf-8") as f:
15-
json.dump(manifests, f, indent=4, ensure_ascii=False)
14+
if __name__ == "__main__":
15+
if len(sys.argv) > 1 and str(sys.argv[1]) == "new-only":
16+
save_plugins_json_file(get_new_plugins())
17+
else:
18+
save_plugins_json_file(get_all_plugins())

ci/src/validator.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# -*-coding: utf-8 -*-
22
import uuid
33

4-
from _utils import (check_url, clean, get_file_plugins_json_info, get_plugin_file_paths, get_plugin_filenames,
5-
icon_path, id_name, language_list, language_name, plugin_reader)
4+
from _utils import (check_url, clean, get_plugin_file_paths, get_plugin_filenames,
5+
icon_path, id_name, language_list, language_name, plugin_reader, get_new_plugin_submission_ids)
66

77
plugin_infos = plugin_reader()
88

@@ -40,14 +40,7 @@ def test_file_name_construct():
4040
), f"Plugin {info['Name']} with ID {info['ID']} does not have the correct filename. Make sure it's name + ID, i.e. {info['Name']}-{info['ID']}.json"
4141

4242
def test_submitted_plugin_id_is_valid_uuid():
43-
plugins_json_ids = [item["ID"] for item in get_file_plugins_json_info("ID")]
44-
existing_plugin_file_ids = [info["ID"] for info in plugin_infos]
45-
46-
for id in existing_plugin_file_ids:
47-
# plugins.json would not contain new submission's ID.
48-
if id in plugins_json_ids:
49-
continue
50-
43+
for id in get_new_plugin_submission_ids():
5144
try:
5245
uuid.UUID(id, version=4)
5346
outcome = True

0 commit comments

Comments
 (0)