feat: 增加 checked: true

-    buffer.writeln('@JsonSerializable()');
+    buffer.writeln('@JsonSerializable(checked: true)');
This commit is contained in:
Max 2025-07-14 13:33:10 +08:00
parent c40f6acc36
commit bb7529273b
4 changed files with 73 additions and 5 deletions

View File

@ -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();

View File

@ -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 {');
//

View File

@ -1340,7 +1340,7 @@ class RetrofitApiGenerator extends BaseGenerator {
buffer.writeln('');
//
buffer.writeln('@JsonSerializable()');
buffer.writeln('@JsonSerializable(checked: true)');
buffer.writeln('class $className {');
//

View File

@ -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.
''';
}