Update tool zip package structure to support new directory layout

This commit is contained in:
jingrow 2025-11-21 22:15:11 +08:00
parent d654838068
commit d5e6e4c44e

View File

@ -259,59 +259,25 @@ def _install_single_tool_directory(tool_dir: str, tool_data: Dict[str, Any]) ->
tool_frontend_dir.mkdir(parents=True, exist_ok=True)
# 复制前端组件文件(如果存在)
frontend_source = tool_dir_path / "frontend"
# 结构tool_name/frontend/tool_name/tool_name.vue
frontend_source = tool_dir_path / "frontend" / tool_name
if frontend_source.exists() and frontend_source.is_dir():
# 如果前端目录下有子目录(如 frontend/{tool_id}/),复制整个子目录
# 否则直接复制 frontend/ 下的所有文件到工具目录
subdirs = [d for d in frontend_source.iterdir() if d.is_dir()]
if subdirs:
# 有子目录,复制第一个子目录的内容
source_subdir = subdirs[0]
if tool_frontend_dir.exists():
shutil.rmtree(tool_frontend_dir)
shutil.copytree(source_subdir, tool_frontend_dir)
logger.info(f"复制前端组件目录: {source_subdir} -> {tool_frontend_dir}")
else:
# 没有子目录,直接复制所有文件
if tool_frontend_dir.exists():
shutil.rmtree(tool_frontend_dir)
tool_frontend_dir.mkdir(parents=True, exist_ok=True)
for item in frontend_source.iterdir():
if item.is_file():
shutil.copy2(item, tool_frontend_dir / item.name)
logger.info(f"复制前端组件: {item.name} -> {tool_frontend_dir}")
elif item.is_dir():
shutil.copytree(item, tool_frontend_dir / item.name)
logger.info(f"复制前端组件目录: {item.name} -> {tool_frontend_dir}")
# 复制 frontend/tool_name/ 目录下的所有内容到目标目录
if tool_frontend_dir.exists():
shutil.rmtree(tool_frontend_dir)
shutil.copytree(frontend_source, tool_frontend_dir)
logger.info(f"复制前端组件目录: {frontend_source} -> {tool_frontend_dir}")
# 复制后端文件(如果存在)
backend_source = tool_dir_path / "backend"
# 结构tool_name/backend/tool_name/tool_name.py
backend_source = tool_dir_path / "backend" / tool_name
if backend_source.exists() and backend_source.is_dir():
backend_target = jingrow_root / "tools" / tool_name
backend_target.mkdir(parents=True, exist_ok=True)
# 如果后端目录下有子目录(如 backend/{tool_name}/),复制子目录的内容
# 否则直接复制 backend/ 下的所有文件
subdirs = [d for d in backend_source.iterdir() if d.is_dir()]
if subdirs:
# 有子目录,复制第一个子目录的内容
source_subdir = subdirs[0]
if backend_target.exists():
shutil.rmtree(backend_target)
shutil.copytree(source_subdir, backend_target)
logger.info(f"复制后端文件目录: {source_subdir} -> {backend_target}")
else:
# 没有子目录,直接复制所有文件
if backend_target.exists():
shutil.rmtree(backend_target)
backend_target.mkdir(parents=True, exist_ok=True)
for item in backend_source.iterdir():
if item.is_file():
shutil.copy2(item, backend_target / item.name)
logger.info(f"复制后端文件: {item.name} -> {backend_target}")
elif item.is_dir():
shutil.copytree(item, backend_target / item.name)
logger.info(f"复制后端文件目录: {item.name} -> {backend_target}")
# 复制 backend/tool_name/ 目录下的所有内容到目标目录
if backend_target.exists():
shutil.rmtree(backend_target)
shutil.copytree(backend_source, backend_target)
logger.info(f"复制后端文件目录: {backend_source} -> {backend_target}")
return {
'success': True,