Merge branch 'release/3.1.4'

This commit is contained in:
Max 2025-12-12 10:44:19 +08:00
commit a737def57b
3 changed files with 23 additions and 12 deletions

View File

@ -94,25 +94,35 @@ class TemplateLoader {
} }
final configContent = packageConfigFile.readAsStringSync(); final configContent = packageConfigFile.readAsStringSync();
final config = jsonDecode(configContent) as Map<String, dynamic>;
final packages = config['packages'] as List<dynamic>;
// swagger_generator_flutter rootUri final package = packages.firstWhere(
// : "name": "swagger_generator_flutter", ... "rootUri": "file:///path/to/package" (p) => p['name'] == 'swagger_generator_flutter',
final pattern = RegExp( orElse: () => null,
r'"name"\s*:\s*"swagger_generator_flutter"[^}]*"rootUri"\s*:\s*"([^"]+)"',
multiLine: true,
); );
final match = pattern.firstMatch(configContent); if (package != null) {
if (match != null) { final rootUri = package['rootUri'] as String;
var rootUri = match.group(1)!; String packagePath;
// file:// // file://
if (rootUri.startsWith('file://')) { if (rootUri.startsWith('file://')) {
rootUri = rootUri.substring(7); packagePath = Uri.parse(rootUri).toFilePath();
} else {
// ( .dart_tool/)
// package_config.json ../
packagePath = rootUri;
}
// .dart_tool/package_config.json
if (!p.isAbsolute(packagePath)) {
// package_config.json .dart_tool
packagePath = p.normalize(p.join('.dart_tool', packagePath));
} }
// //
final templateDir = p.join(rootUri, 'lib', 'templates'); final templateDir = p.join(packagePath, 'lib', 'templates');
if (Directory(templateDir).existsSync()) { if (Directory(templateDir).existsSync()) {
dirs.add(templateDir); dirs.add(templateDir);
} }

View File

@ -1,3 +1,4 @@
import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:mustache_template/mustache_template.dart'; import 'package:mustache_template/mustache_template.dart';

View File

@ -1,7 +1,7 @@
name: swagger_generator_flutter name: swagger_generator_flutter
description: A powerful Swagger/OpenAPI code generator for Flutter projects with Dio + Retrofit support description: A powerful Swagger/OpenAPI code generator for Flutter projects with Dio + Retrofit support
version: 3.1.0 version: 3.1.4
environment: environment:
sdk: '>=3.0.0 <4.0.0' sdk: '>=3.0.0 <4.0.0'