feat: 增加 checked: true
- buffer.writeln('@JsonSerializable()');
+ buffer.writeln('@JsonSerializable(checked: true)');
This commit is contained in:
parent
c40f6acc36
commit
bb7529273b
|
|
@ -1,3 +1,7 @@
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:path/path.dart' as path;
|
||||||
|
|
||||||
import '../core/models.dart';
|
import '../core/models.dart';
|
||||||
import '../generators/documentation_generator.dart';
|
import '../generators/documentation_generator.dart';
|
||||||
import '../generators/endpoint_code_generator.dart';
|
import '../generators/endpoint_code_generator.dart';
|
||||||
|
|
@ -220,6 +224,17 @@ class GenerateCommand extends BaseCommand {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 重新生成 index.dart 文件,包含所有生成的文件
|
||||||
|
if (options.generateModels || options.generateApi) {
|
||||||
|
progress('正在重新生成 index.dart 文件...');
|
||||||
|
final modelsDir = '$fullOutputDir/api_models';
|
||||||
|
final allFiles = await _getAllModelFiles(modelsDir);
|
||||||
|
final indexContent = _generateUpdatedIndexFile(allFiles);
|
||||||
|
final indexPath = '$modelsDir/index.dart';
|
||||||
|
await FileUtils.writeFile(indexPath, indexContent);
|
||||||
|
success('index.dart 文件已更新');
|
||||||
|
}
|
||||||
|
|
||||||
// 生成文档
|
// 生成文档
|
||||||
if (options.generateDocs) {
|
if (options.generateDocs) {
|
||||||
progress('正在生成API文档...');
|
progress('正在生成API文档...');
|
||||||
|
|
@ -268,6 +283,58 @@ class GenerateCommand extends BaseCommand {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 获取所有模型文件列表
|
||||||
|
Future<List<String>> _getAllModelFiles(String modelsDir) async {
|
||||||
|
try {
|
||||||
|
final directory = Directory(modelsDir);
|
||||||
|
if (!await directory.exists()) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
final files = await directory.list().toList();
|
||||||
|
final dartFiles = <String>[];
|
||||||
|
|
||||||
|
for (final entity in files) {
|
||||||
|
if (entity is File && entity.path.endsWith('.dart')) {
|
||||||
|
final fileName = path.basename(entity.path);
|
||||||
|
// 排除 index.dart 本身和 .g.dart 文件
|
||||||
|
if (fileName != 'index.dart' && !fileName.endsWith('.g.dart')) {
|
||||||
|
dartFiles.add(fileName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按文件名排序
|
||||||
|
dartFiles.sort();
|
||||||
|
return dartFiles;
|
||||||
|
} catch (e) {
|
||||||
|
print('获取模型文件列表失败: $e');
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 生成更新的 index.dart 文件内容
|
||||||
|
String _generateUpdatedIndexFile(List<String> fileNames) {
|
||||||
|
final buffer = StringBuffer();
|
||||||
|
|
||||||
|
// 生成文件头
|
||||||
|
buffer.writeln('// API 模型导出文件');
|
||||||
|
buffer.writeln('// 基于 Swagger API 文档: ');
|
||||||
|
buffer.writeln('// 自动生成于: ${DateTime.now().toString().substring(0, 10)} ');
|
||||||
|
buffer.writeln('// 由 xy_swagger_generator by max 生成');
|
||||||
|
buffer.writeln('// Copyright (C) 2025 YuanXuan. All rights reserved.');
|
||||||
|
buffer.writeln('');
|
||||||
|
buffer.writeln('library;');
|
||||||
|
buffer.writeln('');
|
||||||
|
|
||||||
|
// 导出所有文件
|
||||||
|
for (final fileName in fileNames) {
|
||||||
|
buffer.writeln('export \'$fileName\';');
|
||||||
|
}
|
||||||
|
|
||||||
|
return buffer.toString();
|
||||||
|
}
|
||||||
|
|
||||||
/// 生成摘要信息
|
/// 生成摘要信息
|
||||||
void _generateSummary(SwaggerDocument document, String outputDir) {
|
void _generateSummary(SwaggerDocument document, String outputDir) {
|
||||||
final summary = StringBuffer();
|
final summary = StringBuffer();
|
||||||
|
|
|
||||||
|
|
@ -226,7 +226,7 @@ class ModelCodeGenerator extends ModelGenerator {
|
||||||
buffer.writeln(StringUtils.generateComment(model.description));
|
buffer.writeln(StringUtils.generateComment(model.description));
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer.writeln('@JsonSerializable()');
|
buffer.writeln('@JsonSerializable(checked: true)');
|
||||||
buffer.writeln('class $className {');
|
buffer.writeln('class $className {');
|
||||||
|
|
||||||
// 生成属性
|
// 生成属性
|
||||||
|
|
@ -571,7 +571,7 @@ class ModelCodeGenerator extends ModelGenerator {
|
||||||
buffer.writeln(StringUtils.generateComment(model.description));
|
buffer.writeln(StringUtils.generateComment(model.description));
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer.writeln('@JsonSerializable()');
|
buffer.writeln('@JsonSerializable(checked: true)');
|
||||||
buffer.writeln('class $className {');
|
buffer.writeln('class $className {');
|
||||||
|
|
||||||
// 生成属性
|
// 生成属性
|
||||||
|
|
|
||||||
|
|
@ -1340,7 +1340,7 @@ class RetrofitApiGenerator extends BaseGenerator {
|
||||||
buffer.writeln('');
|
buffer.writeln('');
|
||||||
|
|
||||||
// 生成参数实体类
|
// 生成参数实体类
|
||||||
buffer.writeln('@JsonSerializable()');
|
buffer.writeln('@JsonSerializable(checked: true)');
|
||||||
buffer.writeln('class $className {');
|
buffer.writeln('class $className {');
|
||||||
|
|
||||||
// 生成属性
|
// 生成属性
|
||||||
|
|
|
||||||
|
|
@ -344,10 +344,11 @@ class StringUtils {
|
||||||
|
|
||||||
/// 生成文件头注释
|
/// 生成文件头注释
|
||||||
static String generateFileHeader(String description, String source) {
|
static String generateFileHeader(String description, String source) {
|
||||||
final timestamp = DateTime.now().toIso8601String();
|
final timestamp = DateTime.now().toLocal().toString().split(" ").first;
|
||||||
return '''// $description
|
return '''// $description
|
||||||
// 基于 Swagger API 文档:
|
// 基于 Swagger API 文档:
|
||||||
// 自动生成于: $timestamp by Max
|
// 自动生成于: $timestamp
|
||||||
|
// 由 xy_swagger_generator by max 生成
|
||||||
// Copyright (C) 2025 YuanXuan. All rights reserved.
|
// Copyright (C) 2025 YuanXuan. All rights reserved.
|
||||||
''';
|
''';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue