clone_project.sh 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #!/bin/bash
  2. # 配置部分 - 可以根据需要修改
  3. FOLDERS_TO_COPY=(".claude") # 要复制的文件夹列表
  4. FILES_TO_COPY=("CLAUDE.md" "clone_project.sh") # 要复制的具体文件列表
  5. FILE_EXTENSIONS=("pdf") # 要复制的文件后缀列表
  6. # Python 依赖包配置
  7. PYTHON_REQUIREMENTS=(
  8. "langgraph"
  9. "langchain-openai"
  10. "langchain-google-genai"
  11. )
  12. # 获取当前文件夹名称
  13. CURRENT_FOLDER=$(basename "$(pwd)")
  14. # 获取当前日期(格式:MMDD_HHMM)
  15. DATE=$(date +"%m%d_%H%M")
  16. # 组合新文件夹名称
  17. NEW_FOLDER="${CURRENT_FOLDER}_${DATE}"
  18. # 在父目录中创建新文件夹的完整路径
  19. NEW_FOLDER_PATH="../${NEW_FOLDER}"
  20. echo "当前文件夹: $CURRENT_FOLDER"
  21. echo "新文件夹名称: $NEW_FOLDER"
  22. echo "新文件夹路径: $NEW_FOLDER_PATH"
  23. # 检查新文件夹是否已存在
  24. if [ -d "$NEW_FOLDER_PATH" ]; then
  25. echo "错误: 文件夹 '$NEW_FOLDER_PATH' 已存在"
  26. exit 1
  27. fi
  28. # 在父目录中创建新文件夹
  29. echo "在父目录中创建文件夹: $NEW_FOLDER"
  30. mkdir -p "$NEW_FOLDER_PATH"
  31. # 复制指定的文件夹
  32. echo "正在复制指定文件夹..."
  33. for folder in "${FOLDERS_TO_COPY[@]}"; do
  34. if [ -d "$folder" ]; then
  35. echo "复制文件夹: $folder 到 $NEW_FOLDER"
  36. cp -r "$folder" "$NEW_FOLDER_PATH/"
  37. else
  38. echo "警告: 文件夹 '$folder' 不存在,跳过复制"
  39. fi
  40. done
  41. # 复制指定的文件
  42. echo "正在复制指定文件..."
  43. for file in "${FILES_TO_COPY[@]}"; do
  44. if [ -f "$file" ]; then
  45. echo "复制文件: $file 到 $NEW_FOLDER"
  46. cp "$file" "$NEW_FOLDER_PATH/"
  47. else
  48. echo "警告: 文件 '$file' 不存在,跳过复制"
  49. fi
  50. done
  51. # 复制指定后缀的文件
  52. echo "正在复制指定后缀的文件..."
  53. for ext in "${FILE_EXTENSIONS[@]}"; do
  54. FILES_FOUND=$(find . -maxdepth 1 -name "*.${ext}" -type f)
  55. if [ -n "$FILES_FOUND" ]; then
  56. echo "复制 *.${ext} 文件到 $NEW_FOLDER"
  57. cp *.${ext} "$NEW_FOLDER_PATH/" 2>/dev/null
  58. echo "已复制的 *.${ext} 文件:"
  59. ls -1 "$NEW_FOLDER_PATH"/*.${ext} 2>/dev/null | sed 's/.*\// - /'
  60. else
  61. echo "警告: 当前目录下没有找到 *.${ext} 文件"
  62. fi
  63. done
  64. # 创建 requirements.txt 文件
  65. echo "正在创建 requirements.txt 文件..."
  66. REQUIREMENTS_FILE="$NEW_FOLDER_PATH/requirements.txt"
  67. > "$REQUIREMENTS_FILE" # 清空文件
  68. for package in "${PYTHON_REQUIREMENTS[@]}"; do
  69. echo "$package" >> "$REQUIREMENTS_FILE"
  70. done
  71. echo "requirements.txt 文件已创建,包含以下依赖包:"
  72. cat "$REQUIREMENTS_FILE" | sed 's/^/ - /'
  73. echo "操作完成!"
  74. echo "新文件夹 '$NEW_FOLDER' 已创建,并已复制相关文件。"
  75. # 检查 conda 是否可用
  76. if ! command -v conda &> /dev/null; then
  77. echo "错误: conda 未找到,请确保已安装 conda 并添加到 PATH"
  78. exit 1
  79. fi
  80. # 初始化 conda(确保在当前 shell 中生效)
  81. eval "$(conda shell.bash hook)"
  82. echo "正在创建 conda 环境: ${NEW_FOLDER}"
  83. conda create -n "${NEW_FOLDER}" python=3.10 -y
  84. echo "正在激活环境并安装依赖包..."
  85. conda run -n "${NEW_FOLDER}" pip install -r "${NEW_FOLDER_PATH}/requirements.txt"
  86. echo "✅ 环境创建完成!"
  87. echo "📋 使用以下命令激活环境:"
  88. echo " conda activate ${NEW_FOLDER}"
  89. echo ""
  90. echo "📦 已安装的包:"
  91. conda run -n "${NEW_FOLDER}" pip list | grep -E "(langgraph|langchain)"
  92. echo "新工程路径:"
  93. echo " $(cd .. && pwd)/$NEW_FOLDER"
  94. #删除 conda env remove -n env_name