#!/bin/bash # 环境设置脚本 # 用于设置开发环境的必要组件和依赖 set -euo pipefail # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 日志函数 log_info() { echo -e "${BLUE}[INFO]${NC} $1" } log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } # 检查必要的工具 check_dependencies() { log_info "检查系统依赖..." local deps=("git" "curl" "wget" "jq" "docker" "podman") local missing_deps=() for dep in "${deps[@]}"; do if ! command -v "$dep" &> /dev/null; then missing_deps+=("$dep") fi done if [ ${#missing_deps[@]} -ne 0 ]; then log_warning "缺少以下依赖: ${missing_deps[*]}" log_info "请安装缺少的依赖后重新运行" return 1 fi log_success "所有依赖检查通过" } # 设置环境变量 setup_environment_variables() { log_info "设置环境变量..." # 创建环境变量文件 cat > .env << EOF # 项目环境变量 PROJECT_ROOT=$(pwd) SCRIPTS_DIR=\${PROJECT_ROOT}/scripts # Vault 配置 VAULT_ADDR=http://127.0.0.1:8200 VAULT_DEV_ROOT_TOKEN_ID=myroot # Consul 配置 CONSUL_HTTP_ADDR=http://127.0.0.1:8500 # Nomad 配置 NOMAD_ADDR=http://127.0.0.1:4646 # MCP 配置 MCP_SERVER_PORT=3000 EOF log_success "环境变量文件已创建: .env" } # 创建必要的目录 create_directories() { log_info "创建必要的目录..." local dirs=( "logs" "tmp" "data" "backups/vault" "backups/consul" "backups/nomad" ) for dir in "${dirs[@]}"; do mkdir -p "$dir" log_info "创建目录: $dir" done log_success "目录创建完成" } # 设置脚本权限 setup_script_permissions() { log_info "设置脚本执行权限..." find scripts/ -name "*.sh" -exec chmod +x {} \; log_success "脚本权限设置完成" } # 初始化 Git hooks(如果需要) setup_git_hooks() { log_info "设置 Git hooks..." if [ -d ".git" ]; then # 创建 pre-commit hook cat > .git/hooks/pre-commit << 'EOF' #!/bin/bash # 运行基本的代码检查 echo "运行 pre-commit 检查..." # 检查脚本语法 find scripts/ -name "*.sh" -exec bash -n {} \; || exit 1 echo "Pre-commit 检查通过" EOF chmod +x .git/hooks/pre-commit log_success "Git hooks 设置完成" else log_warning "不是 Git 仓库,跳过 Git hooks 设置" fi } # 主函数 main() { log_info "开始环境设置..." check_dependencies || exit 1 setup_environment_variables create_directories setup_script_permissions setup_git_hooks log_success "环境设置完成!" log_info "请运行 'source .env' 来加载环境变量" } # 执行主函数 main "$@"