#!/bin/bash # Swagger API 代码生成脚本 # 用于 Learning Officer OA 项目 set -e # 遇到错误立即退出 # 颜色定义 GREEN='\033[0;32m' YELLOW='\033[1;33m' CYAN='\033[0;36m' NC='\033[0m' # No Color echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo -e "${CYAN}🚀 Swagger API 代码生成器${NC}" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" # 检查是否在项目根目录 if [ ! -f "pubspec.yaml" ]; then echo -e "${YELLOW}❌ 错误: 请在项目根目录运行此脚本${NC}" exit 1 fi # 检查配置文件是否存在 if [ ! -f "generator_config.yaml" ]; then echo -e "${YELLOW}❌ 错误: 找不到 generator_config.yaml 配置文件${NC}" echo "请先创建配置文件" exit 1 fi rm -rf lib/src/api/*.dart rm -rf lib/src/models/*.dart # 步骤 1: 运行代码生成器 echo -e "${CYAN}📝 步骤 1/4: 正在运行代码生成器...${NC}" dart run swagger_generator_flutter generate --all if [ $? -ne 0 ]; then echo -e "${YELLOW}❌ 代码生成失败!${NC}" exit 1 fi echo -e "${GREEN}✅ 代码生成成功${NC}" echo "" # 步骤 2: 运行 build_runner 生成 .g.dart 文件 echo -e "${CYAN}🔨 步骤 2/4: 正在运行 build_runner 生成 .g.dart 文件...${NC}" flutter pub run build_runner build --delete-conflicting-outputs if [ $? -ne 0 ]; then echo -e "${YELLOW}⚠️ build_runner 执行失败,请检查错误信息${NC}" else echo -e "${GREEN}✅ build_runner 执行成功${NC}" fi echo "" # 步骤 3: 修复和排序 imports echo -e "${CYAN}🔧 步骤 3/4: 修复和排序 imports...${NC}" dart fix --apply lib/common/api FIX_API_EXIT_CODE=$? dart fix --apply lib/common/api_models FIX_MODELS_EXIT_CODE=$? if [ $FIX_API_EXIT_CODE -ne 0 ] || [ $FIX_MODELS_EXIT_CODE -ne 0 ]; then echo -e "${YELLOW}⚠️ dart fix 执行失败,请检查错误信息${NC}" else echo -e "${GREEN}✅ dart fix 执行成功${NC}" fi echo "" # 步骤 4: 格式化代码 echo -e "${CYAN}📐 步骤 4/4: 格式化代码...${NC}" dart format lib/common/api lib/common/api_models --set-exit-if-changed if [ $? -ne 0 ]; then echo -e "${YELLOW}⚠️ 代码格式化失败,请检查错误信息${NC}" else echo -e "${GREEN}✅ 代码格式化完成${NC}" fi echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo -e "${GREEN}✨ 代码生成完成!${NC}" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo -e "${CYAN}📋 生成的文件位置:${NC}" echo " - API 接口: lib/common/api/" echo " - API 模型: lib/common/api_models/" echo "" echo -e "${CYAN}💡 提示:${NC}" echo " - 如果生成的文件有错误,请检查并修复后重新运行 build_runner" echo " - 建议在提交代码前检查生成的代码是否符合项目规范" echo ""