bootstrap.sh 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/usr/bin/env bash
  2. #
  3. # 雨飏001 · 数字生命引导脚本 (Linux/macOS)
  4. # 用法: bash bootstrap.sh
  5. #
  6. set -euo pipefail
  7. HARNESS="${HOME}/.fmode-harness"
  8. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  9. # 如果脚本在仓库内运行,HARNESS 就是仓库根目录
  10. if [ -d "${SCRIPT_DIR}/.git" ]; then
  11. HARNESS="${SCRIPT_DIR}"
  12. fi
  13. echo "=========================================="
  14. echo " 雨飏001 · 数字生命引导"
  15. echo " 版本: v0.1"
  16. echo "=========================================="
  17. echo ""
  18. # 1. 检查环境
  19. echo "[1/5] 检查系统环境..."
  20. OS="$(uname -s)"
  21. ARCH="$(uname -m)"
  22. echo " 系统: ${OS} ${ARCH}"
  23. # 2. 检查必要命令
  24. echo "[2/5] 检查必要工具..."
  25. for cmd in git curl; do
  26. if command -v $cmd &>/dev/null; then
  27. echo " ✅ $cmd"
  28. else
  29. echo " ❌ $cmd 未安装"
  30. exit 1
  31. fi
  32. done
  33. # 3. 检查密钥
  34. echo "[3/5] 检查密钥配置..."
  35. if [ -f "${HARNESS}/.env" ]; then
  36. echo " ✅ 密钥文件已存在"
  37. source "${HARNESS}/.env"
  38. else
  39. echo " ⚠️ 密钥文件不存在,将创建模板"
  40. echo " 请编辑 ${HARNESS}/.env 填入真实密钥"
  41. cp "${HARNESS}/secrets/.env.example" "${HARNESS}/.env" 2>/dev/null || true
  42. fi
  43. # 4. 检查 SSH 密钥
  44. echo "[4/5] 检查 SSH 密钥..."
  45. if [ -f "${HOME}/.ssh/id_ed25519" ]; then
  46. echo " ✅ SSH 密钥已存在"
  47. else
  48. echo " ⚠️ SSH 密钥不存在,创建..."
  49. ssh-keygen -t ed25519 -C "agent-yuyang001" -f "${HOME}/.ssh/id_ed25519" -N ""
  50. echo " 🔑 公钥:"
  51. cat "${HOME}/.ssh/id_ed25519.pub"
  52. echo " 请将此公钥添加到 Git 服务器"
  53. fi
  54. # 5. 克隆项目
  55. echo "[5/5] 克隆项目仓库..."
  56. PROJECTS_DIR="${HARNESS}/projects"
  57. mkdir -p "${PROJECTS_DIR}"
  58. echo ""
  59. echo "=========================================="
  60. echo " ✅ 引导完成"
  61. echo " 仓库路径: ${HARNESS}"
  62. echo " 下一步: 编辑 .env 文件填入密钥"
  63. echo " 运行 setup.sh 安装依赖"
  64. echo "=========================================="