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 '../generators/documentation_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) {
|
||||
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) {
|
||||
final summary = StringBuffer();
|
||||
|
|
|
|||
|
|
@ -226,7 +226,7 @@ class ModelCodeGenerator extends ModelGenerator {
|
|||
buffer.writeln(StringUtils.generateComment(model.description));
|
||||
}
|
||||
|
||||
buffer.writeln('@JsonSerializable()');
|
||||
buffer.writeln('@JsonSerializable(checked: true)');
|
||||
buffer.writeln('class $className {');
|
||||
|
||||
// 生成属性
|
||||
|
|
@ -571,7 +571,7 @@ class ModelCodeGenerator extends ModelGenerator {
|
|||
buffer.writeln(StringUtils.generateComment(model.description));
|
||||
}
|
||||
|
||||
buffer.writeln('@JsonSerializable()');
|
||||
buffer.writeln('@JsonSerializable(checked: true)');
|
||||
buffer.writeln('class $className {');
|
||||
|
||||
// 生成属性
|
||||
|
|
|
|||
|
|
@ -1340,7 +1340,7 @@ class RetrofitApiGenerator extends BaseGenerator {
|
|||
buffer.writeln('');
|
||||
|
||||
// 生成参数实体类
|
||||
buffer.writeln('@JsonSerializable()');
|
||||
buffer.writeln('@JsonSerializable(checked: true)');
|
||||
buffer.writeln('class $className {');
|
||||
|
||||
// 生成属性
|
||||
|
|
|
|||
|
|
@ -344,10 +344,11 @@ class StringUtils {
|
|||
|
||||
/// 生成文件头注释
|
||||
static String generateFileHeader(String description, String source) {
|
||||
final timestamp = DateTime.now().toIso8601String();
|
||||
final timestamp = DateTime.now().toLocal().toString().split(" ").first;
|
||||
return '''// $description
|
||||
// 基于 Swagger API 文档:
|
||||
// 自动生成于: $timestamp by Max
|
||||
// 自动生成于: $timestamp
|
||||
// 由 xy_swagger_generator by max 生成
|
||||
// Copyright (C) 2025 YuanXuan. All rights reserved.
|
||||
''';
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue