Prepare the OpenAPI parser and Dart generator as a publishable Koi package with CLI entrypoint, docs, examples, tests, and pub.dev release metadata. Constraint: Initial GitHub import follows koi_blueprint_flutter identity mr.koi <i@mrkoi.is>. Rejected: Keep local runtime state in the initial repository | .dart_tool, .omx, and pubspec.lock are ignored for a reusable package source tree. Confidence: high Scope-risk: moderate Directive: Keep generated-output behavior covered by parser and generator tests before changing rendering rules. Tested: dart analyze; dart test; PUB_HOSTED_URL=https://pub.dev dart pub publish --dry-run Not-tested: End-to-end downstream build_runner compilation of generated Retrofit/Freezed output.
44 lines
1.0 KiB
Dart
44 lines
1.0 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:koi_swagger_parser/koi_swagger_parser.dart';
|
|
import 'package:path/path.dart' as p;
|
|
|
|
Future<void> main() async {
|
|
final packageRoot = Directory.current.path;
|
|
final tempDir = await Directory.systemTemp.createTemp(
|
|
'koi_swagger_parser_example_',
|
|
);
|
|
final configFile = File(p.join(tempDir.path, 'koi_swagger_parser.yaml'));
|
|
await configFile.writeAsString('''
|
|
input:
|
|
swagger_urls:
|
|
- url: ${p.join(packageRoot, 'test', 'fixtures', 'dba_openapi.json')}
|
|
enabled: true
|
|
|
|
output:
|
|
base_dir: ${p.join(tempDir.path, 'lib', 'src')}
|
|
included_tags:
|
|
- stores
|
|
- materials
|
|
|
|
generation:
|
|
api:
|
|
response_wrapper:
|
|
mode: passthrough
|
|
|
|
formatting:
|
|
run_dart_format: false
|
|
''');
|
|
|
|
final result = await const KoiSwaggerParser().generate(
|
|
configPath: configFile.path,
|
|
dryRun: true,
|
|
);
|
|
|
|
print(
|
|
'loaded ${result.sourceDocuments.length} source(s), '
|
|
'parsed ${result.operationsCount} operation(s), '
|
|
'rendered ${result.modelsCount} model(s).',
|
|
);
|
|
}
|