77import shutil
88import hashlib
99from datetime import datetime
10+
1011def calculate_md5 (file_path , chunk_size = 4096 ):
1112 """计算文件的 MD5 值"""
1213 md5_hash = hashlib .md5 ()
@@ -96,6 +97,8 @@ def main():
9697 parser = argparse .ArgumentParser (description = '处理插件配置文件' )
9798 parser .add_argument ('properties_path' , nargs = '?' , default = None ,
9899 help = 'properties文件路径(默认:脚本所在目录下的plugins.properties)' )
100+ parser .add_argument ('--download-v2' , action = 'store_true' ,
101+ help = '是否下载 2.0.0 版本插件' )
99102 args = parser .parse_args ()
100103
101104 # 用户未提供路径时,使用默认逻辑
@@ -116,27 +119,35 @@ def main():
116119
117120 for plugin_name , plugin_url in properties .items ():
118121 print (f"\n 正在处理插件: { plugin_name } " )
119- success = process_plugin (base_path , plugin_name , plugin_url )
122+ # 处理原始版本(1.0.0)
123+ success = process_plugin (base_path , plugin_name , plugin_url , "1.0.0" )
120124 if not success :
121- failed_plugins .append (plugin_name )
125+ failed_plugins .append (f"{ plugin_name } :1.0.0" )
126+
127+ # 如果指定了 --download-v2 参数,则额外处理 2.0.0 版本
128+ if args .download_v2 :
129+ v2_url = plugin_url .replace (":1.0.0" , ":2.0.0" )
130+ print (f"\n 正在处理插件 { plugin_name } 的 2.0.0 版本" )
131+ success = process_plugin (base_path , plugin_name , v2_url , "2.0.0" )
132+ if not success :
133+ failed_plugins .append (f"{ plugin_name } :2.0.0" )
122134
123135 if failed_plugins :
124136 print ("\n 以下插件未成功处理:" )
125137 for plugin in failed_plugins :
126138 print (f"- { plugin } " )
127139
128- def process_plugin (base_path , plugin_name , plugin_url ):
140+ def process_plugin (base_path , plugin_name , plugin_url , version ):
129141 """
130142 处理单个插件下载和信息获取
131143 """
132- version = plugin_url .split (':' )[- 1 ]
133144 plugins_base_path = os .path .join (base_path , 'plugins' )
134145 os .makedirs (plugins_base_path , exist_ok = True )
135146
136147 plugin_dir = os .path .join (plugins_base_path , plugin_name , version )
137148 os .makedirs (plugin_dir , exist_ok = True )
138149
139- temp_download_dir = os .path .join (plugins_base_path , f"{ plugin_name } _temp" )
150+ temp_download_dir = os .path .join (plugins_base_path , f"{ plugin_name } _ { version } _temp" )
140151 os .makedirs (temp_download_dir , exist_ok = True )
141152
142153 wasm_found = False
@@ -169,10 +180,10 @@ def process_plugin(base_path, plugin_name, plugin_url):
169180 wasm_found = handle_wasm_layer (wasm_path , plugin_dir )
170181
171182 except subprocess .CalledProcessError as e :
172- print (f"{ plugin_name } 命令执行失败: { e } " )
183+ print (f"{ plugin_name } ( { version } ) 命令执行失败: { e } " )
173184 return False
174185 except Exception as e :
175- print (f"{ plugin_name } 处理过程中发生错误: { e } " )
186+ print (f"{ plugin_name } ( { version } ) 处理过程中发生错误: { e } " )
176187 return False
177188 finally :
178189 shutil .rmtree (temp_download_dir , ignore_errors = True )
@@ -183,4 +194,4 @@ def process_plugin(base_path, plugin_name, plugin_url):
183194 return wasm_found
184195
185196if __name__ == '__main__' :
186- main ()
197+ main ()
0 commit comments