Files
template/scripts/init-project.sh
Claude AI 05abde4562 Initial commit - Claude Enterprise Development Templates v1.0
🎯 Features:
- Complete enterprise-level development framework
- AI-driven code generation with Claude integration
- Multi-layer template system (backend, frontend, bigscreen)
- Industry-specific solutions (healthcare, finance, government)
- One-click project creation scripts

🏗️ Templates Included:
- Backend: RuoYi-Vue-Plus, Jeecg-Boot, Sa-Token, Spring Cloud
- Frontend: Vue-Vben-Admin, Naive Admin, Arco Pro
- Bigscreen: DataV Vue3, ECharts, D2Admin

🧠 Claude AI Integration:
- Intelligent module generation
- Code quality assurance
- Automated testing
- Performance optimization

🚀 Generated by Claude Enterprise Framework
Version: 1.0.0
Created: 2024-10-11
2025-10-11 19:32:21 +08:00

435 lines
12 KiB
Bash
Executable File

#!/bin/bash
# Claude Enterprise Framework - Project Initialization Script
# 项目快速初始化脚本
set -e
# 脚本版本
VERSION="1.0.0"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 打印带颜色的消息
print_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
print_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 显示帮助信息
show_help() {
cat << EOF
Claude Enterprise Framework - Project Initialization Script v${VERSION}
Usage: $0 [OPTIONS]
Options:
-n, --name PROJECT_NAME 项目名称 (必填)
-t, --template TEMPLATE_NAME 项目模板 (默认: java-spring-boot)
-p, --package PACKAGE_NAME Java包名 (默认: com.example.PROJECT_NAME)
-d, --directory TARGET_DIR 目标目录 (默认: ./PROJECT_NAME)
-s, --stack TECH_STACK 技术栈配置 (默认: java21-springboot3-mysql)
-i, --industry INDUSTRY 行业领域 (默认: general)
--force 强制覆盖已存在的目录
-v, --version 显示版本信息
-h, --help 显示帮助信息
Templates:
java-spring-boot Java Spring Boot 单体应用
java-microservice Java Spring Boot 微服务
nodejs-nestjs Node.js NestJS 应用
python-fastapi Python FastAPI 应用
Tech Stacks:
java21-springboot3-mysql Java 21 + Spring Boot 3 + MySQL
java17-springboot2-postgresql Java 17 + Spring Boot 2 + PostgreSQL
nodejs20-nestjs-postgresql Node.js 20 + NestJS + PostgreSQL
python311-fastapi-postgresql Python 3.11 + FastAPI + PostgreSQL
Industries:
general 通用项目
healthcare 医疗健康
finance 金融服务
government 政府公共服务
ecommerce 电子商务
education 教育培训
Examples:
# 创建一个医疗健康领域的Java项目
$0 --name "health-management-system" \\
--template java-spring-boot \\
--package "com.hospital.health" \\
--stack java21-springboot3-mysql \\
--industry healthcare
# 创建一个电商微服务项目
$0 -n "ecommerce-platform" \\
-t java-microservice \\
-p "com.ecommerce.platform" \\
-s java21-springboot3-mysql \\
-i ecommerce
EOF
}
# 默认值
PROJECT_NAME=""
TEMPLATE_NAME="java-spring-boot"
PACKAGE_NAME=""
TARGET_DIR=""
TECH_STACK="java21-springboot3-mysql"
INDUSTRY="general"
FORCE_OVERWRITE=false
# 获取框架根目录
FRAMEWORK_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
# 解析命令行参数
while [[ $# -gt 0 ]]; do
case $1 in
-n|--name)
PROJECT_NAME="$2"
shift 2
;;
-t|--template)
TEMPLATE_NAME="$2"
shift 2
;;
-p|--package)
PACKAGE_NAME="$2"
shift 2
;;
-d|--directory)
TARGET_DIR="$2"
shift 2
;;
-s|--stack)
TECH_STACK="$2"
shift 2
;;
-i|--industry)
INDUSTRY="$2"
shift 2
;;
--force)
FORCE_OVERWRITE=true
shift
;;
-v|--version)
echo "Claude Enterprise Framework Init Script v${VERSION}"
exit 0
;;
-h|--help)
show_help
exit 0
;;
*)
print_error "未知参数: $1"
show_help
exit 1
;;
esac
done
# 验证必填参数
if [[ -z "$PROJECT_NAME" ]]; then
print_error "项目名称不能为空,请使用 -n 或 --name 指定"
show_help
exit 1
fi
# 设置默认值
if [[ -z "$PACKAGE_NAME" ]]; then
# 将项目名转换为包名格式
PACKAGE_NAME="com.example.$(echo "$PROJECT_NAME" | tr '[:upper:]' '[:lower:]' | tr '-' '.')"
fi
if [[ -z "$TARGET_DIR" ]]; then
TARGET_DIR="./$PROJECT_NAME"
fi
# 验证模板存在
TEMPLATE_PATH="$FRAMEWORK_ROOT/project-templates/$TEMPLATE_NAME"
if [[ ! -d "$TEMPLATE_PATH" ]]; then
print_error "模板 '$TEMPLATE_NAME' 不存在"
print_info "可用模板:"
ls -1 "$FRAMEWORK_ROOT/project-templates/" | sed 's/^/ /'
exit 1
fi
# 验证目标目录
if [[ -d "$TARGET_DIR" ]]; then
if [[ "$FORCE_OVERWRITE" == false ]]; then
print_error "目标目录 '$TARGET_DIR' 已存在,使用 --force 参数强制覆盖"
exit 1
else
print_warning "正在删除已存在的目录 '$TARGET_DIR'"
rm -rf "$TARGET_DIR"
fi
fi
print_info "开始初始化项目..."
print_info "项目名称: $PROJECT_NAME"
print_info "项目模板: $TEMPLATE_NAME"
print_info "包名: $PACKAGE_NAME"
print_info "目标目录: $TARGET_DIR"
print_info "技术栈: $TECH_STACK"
print_info "行业领域: $INDUSTRY"
# 创建项目目录
mkdir -p "$TARGET_DIR"
# 复制模板文件
print_info "复制项目模板文件..."
cp -r "$TEMPLATE_PATH"/* "$TARGET_DIR/"
# 复制框架核心文件
print_info "复制Claude开发框架..."
mkdir -p "$TARGET_DIR/claude-framework"
cp -r "$FRAMEWORK_ROOT/framework"/* "$TARGET_DIR/claude-framework/"
# 解析技术栈配置
case "$TECH_STACK" in
java21-springboot3-mysql)
BACKEND_LANGUAGE="Java"
LANGUAGE_VERSION="21"
FRAMEWORK="Spring Boot"
FRAMEWORK_VERSION="3.x"
DATABASE="MySQL"
DATABASE_VERSION="8.0"
;;
java17-springboot2-postgresql)
BACKEND_LANGUAGE="Java"
LANGUAGE_VERSION="17"
FRAMEWORK="Spring Boot"
FRAMEWORK_VERSION="2.7.x"
DATABASE="PostgreSQL"
DATABASE_VERSION="15"
;;
nodejs20-nestjs-postgresql)
BACKEND_LANGUAGE="Node.js"
LANGUAGE_VERSION="20.x"
FRAMEWORK="NestJS"
FRAMEWORK_VERSION="10.x"
DATABASE="PostgreSQL"
DATABASE_VERSION="15"
;;
python311-fastapi-postgresql)
BACKEND_LANGUAGE="Python"
LANGUAGE_VERSION="3.11"
FRAMEWORK="FastAPI"
FRAMEWORK_VERSION="0.104.x"
DATABASE="PostgreSQL"
DATABASE_VERSION="15"
;;
*)
print_error "不支持的技术栈: $TECH_STACK"
exit 1
;;
esac
# 生成项目配置文件
print_info "生成项目配置文件..."
cat > "$TARGET_DIR/claude-project.yml" << EOF
# Claude Enterprise Framework 项目配置
version: "1.0"
project:
name: "$PROJECT_NAME"
package: "$PACKAGE_NAME"
directory: "$TARGET_DIR"
industry: "$INDUSTRY"
technology:
language: "$BACKEND_LANGUAGE"
language_version: "$LANGUAGE_VERSION"
framework: "$FRAMEWORK"
framework_version: "$FRAMEWORK_VERSION"
database: "$DATABASE"
database_version: "$DATABASE_VERSION"
stack_id: "$TECH_STACK"
claude:
template_version: "1.0"
bluebook_version: "1.0"
prompt_templates: "claude-framework/prompt-templates"
created:
date: "$(date '+%Y-%m-%d %H:%M:%S')"
by: "Claude Enterprise Framework Init Script v${VERSION}"
EOF
# 替换模板中的占位符
print_info "配置项目模板..."
# 定义替换函数
replace_placeholder() {
local file="$1"
local pattern="$2"
local replacement="$3"
if [[ -f "$file" ]]; then
sed -i.bak "s|$pattern|$replacement|g" "$file" && rm "$file.bak"
fi
}
# 递归替换所有文件中的占位符
find "$TARGET_DIR" -type f \( -name "*.java" -o -name "*.yml" -o -name "*.yaml" -o -name "*.xml" -o -name "*.md" -o -name "*.properties" \) | while read -r file; do
replace_placeholder "$file" "{{PROJECT_NAME}}" "$PROJECT_NAME"
replace_placeholder "$file" "{{PACKAGE_NAME}}" "$PACKAGE_NAME"
replace_placeholder "$file" "{{BACKEND_LANGUAGE}}" "$BACKEND_LANGUAGE"
replace_placeholder "$file" "{{LANGUAGE_VERSION}}" "$LANGUAGE_VERSION"
replace_placeholder "$file" "{{FRAMEWORK}}" "$FRAMEWORK"
replace_placeholder "$file" "{{FRAMEWORK_VERSION}}" "$FRAMEWORK_VERSION"
replace_placeholder "$file" "{{DATABASE}}" "$DATABASE"
replace_placeholder "$file" "{{DATABASE_VERSION}}" "$DATABASE_VERSION"
replace_placeholder "$file" "{{TECH_STACK}}" "$TECH_STACK"
replace_placeholder "$file" "{{INDUSTRY}}" "$INDUSTRY"
done
# 重命名包目录结构(针对Java项目)
if [[ "$BACKEND_LANGUAGE" == "Java" ]]; then
print_info "配置Java包结构..."
# 创建包目录结构
PACKAGE_PATH=$(echo "$PACKAGE_NAME" | tr '.' '/')
# 在src/main/java和src/test/java下创建包结构
for source_root in "src/main/java" "src/test/java"; do
if [[ -d "$TARGET_DIR/$source_root" ]]; then
mkdir -p "$TARGET_DIR/$source_root/$PACKAGE_PATH"
# 移动现有的Java文件到新的包结构中
find "$TARGET_DIR/$source_root" -maxdepth 1 -name "*.java" -exec mv {} "$TARGET_DIR/$source_root/$PACKAGE_PATH/" \;
fi
done
fi
# 生成CLAUDE.md配置文件
print_info "生成Claude开发配置文件..."
cat > "$TARGET_DIR/CLAUDE.md" << EOF
# Claude AI 开发配置
## 项目信息
- **项目名称**: $PROJECT_NAME
- **技术栈**: $BACKEND_LANGUAGE $LANGUAGE_VERSION + $FRAMEWORK $FRAMEWORK_VERSION + $DATABASE $DATABASE_VERSION
- **行业领域**: $INDUSTRY
- **包名**: $PACKAGE_NAME
## Claude Enterprise Framework 集成
本项目使用 Claude Enterprise Framework v1.0,提供完整的AI驱动开发体系。
### 🚀 快速开始
1. **需求分析**
\`\`\`bash
claude --template analysis --input requirements.md
\`\`\`
2. **架构设计**
\`\`\`bash
claude --template design --input analysis-output.md
\`\`\`
3. **代码实现**
\`\`\`bash
claude --template implementation --input design-output.md
\`\`\`
4. **质量检查**
\`\`\`bash
./scripts/quality-check.sh
\`\`\`
### 📚 框架文档
- [完整蓝皮书](./claude-framework/claude-bluebook/)
- [Prompt模板库](./claude-framework/prompt-templates/)
- [质量门禁配置](./claude-framework/quality-gates/)
### 🎯 质量目标
- Claude输出一致性 ≥90%
- 人工修正率 ≤10%
- 质量门禁通过率 ≥95%
- 开发效率提升 ≥3倍
### 📊 技术栈约束
#### 后端技术
- **编程语言**: $BACKEND_LANGUAGE $LANGUAGE_VERSION
- **框架**: $FRAMEWORK $FRAMEWORK_VERSION
- **数据库**: $DATABASE $DATABASE_VERSION
- **构建工具**: $([ "$BACKEND_LANGUAGE" == "Java" ] && echo "Maven/Gradle" || echo "NPM/Yarn")
#### 架构模式
- **分层架构**: Controller → Service → Repository → Entity
- **领域驱动设计**: 聚合、实体、值对象、领域服务
- **REST API**: OpenAPI 3.0规范
#### 质量要求
- **测试覆盖**: 单元测试70%+,集成测试50%+
- **代码规范**: $([ "$BACKEND_LANGUAGE" == "Java" ] && echo "Google Java Style" || echo "Prettier + ESLint")
- **文档标准**: $([ "$BACKEND_LANGUAGE" == "Java" ] && echo "JavaDoc" || echo "TSDoc")
---
**框架版本**: v1.0
**生成时间**: $(date '+%Y-%m-%d %H:%M:%S')
**生成工具**: Claude Enterprise Framework Init Script v${VERSION}
EOF
# 设置执行权限
if [[ -d "$TARGET_DIR/scripts" ]]; then
print_info "设置脚本执行权限..."
chmod +x "$TARGET_DIR/scripts"/*.sh
fi
# 初始化Git仓库(如果不存在)
if [[ ! -d "$TARGET_DIR/.git" ]]; then
print_info "初始化Git仓库..."
cd "$TARGET_DIR"
git init
git add .
git commit -m "Initial commit - Generated by Claude Enterprise Framework v${VERSION}
Project: $PROJECT_NAME
Template: $TEMPLATE_NAME
Tech Stack: $TECH_STACK
Industry: $INDUSTRY"
cd - > /dev/null
fi
# 完成消息
print_success "项目初始化完成!"
echo
print_info "项目信息:"
echo " 📁 项目目录: $TARGET_DIR"
echo " 🏷️ 项目名称: $PROJECT_NAME"
echo " 📦 包名: $PACKAGE_NAME"
echo " 🔧 技术栈: $TECH_STACK"
echo " 🏢 行业领域: $INDUSTRY"
echo
print_info "下一步操作:"
echo " 1. cd $TARGET_DIR"
echo " 2. 阅读 README.md 了解项目结构"
echo " 3. 查看 CLAUDE.md 学习Claude开发流程"
echo " 4. 运行 ./scripts/quality-check.sh 验证环境配置"
echo
print_success "享受Claude驱动的高效开发体验!"