Skip to content

Commit db204af

Browse files
authored
feat: support 2.0.0 wasmplugin (#8)
1 parent dffa413 commit db204af

2 files changed

Lines changed: 20 additions & 9 deletions

File tree

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ WORKDIR /workspace
2626
COPY pull_plugins.py plugins.properties ./
2727

2828
# 执行构建操作
29-
RUN python3 pull_plugins.py
29+
RUN python3 pull_plugins.py --download-v2
3030

3131
# 运行阶段:最终镜像
3232
FROM $NGINX_IMAGE

pull_plugins.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import shutil
88
import hashlib
99
from datetime import datetime
10+
1011
def 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

185196
if __name__ == '__main__':
186-
main()
197+
main()

0 commit comments

Comments
 (0)