149 lines
2.9 KiB
Bash
Executable File
149 lines
2.9 KiB
Bash
Executable File
#!/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 "$@" |