55import re
66import 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
912utils_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+
5461def 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+
7077def 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
0 commit comments