-
Notifications
You must be signed in to change notification settings - Fork 3.6k
[pigeon] Recursively create output target files #4458
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
2611c6e
f90f49f
e51dbe3
7464301
c659eac
fc9f638
2cb30a0
88ed03c
83972c9
56a5fec
9da076c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
- Loading branch information
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -379,7 +379,7 @@ Iterable<String> _lineReader(String path) sync* { | |
| } | ||
| } | ||
|
|
||
| IOSink? _openSink(String? output, {String basePath = ''}) { | ||
| Future<IOSink?> _openSink(String? output, {String basePath = ''}) async { | ||
| if (output == null) { | ||
| return null; | ||
| } | ||
|
|
@@ -389,6 +389,7 @@ IOSink? _openSink(String? output, {String basePath = ''}) { | |
| sink = stdout; | ||
| } else { | ||
| file = File(path.posix.join(basePath, output)); | ||
| await file.create(recursive: true); | ||
| sink = file.openWrite(); | ||
| } | ||
| return sink; | ||
|
|
@@ -407,7 +408,7 @@ abstract class GeneratorAdapter { | |
| /// if the [GeneratorAdapter] should generate. | ||
| /// | ||
| /// If it returns `null`, the [GeneratorAdapter] will be skipped. | ||
| IOSink? shouldGenerate(PigeonOptions options, FileType fileType); | ||
| Future<IOSink?> shouldGenerate(PigeonOptions options, FileType fileType); | ||
|
|
||
| /// Write the generated code described in [root] to [sink] using the [options]. | ||
| void generate( | ||
|
|
@@ -451,8 +452,8 @@ class AstGeneratorAdapter implements GeneratorAdapter { | |
| } | ||
|
|
||
| @override | ||
| IOSink? shouldGenerate(PigeonOptions options, FileType _) => | ||
| _openSink(options.astOut, basePath: options.basePath ?? ''); | ||
| Future<IOSink?> shouldGenerate(PigeonOptions options, FileType _) async => | ||
| await _openSink(options.astOut, basePath: options.basePath ?? ''); | ||
|
|
||
| @override | ||
| List<Error> validate(PigeonOptions options, Root root) => <Error>[]; | ||
|
|
@@ -472,6 +473,7 @@ class DartGeneratorAdapter implements GeneratorAdapter { | |
| final DartOptions dartOptionsWithHeader = _dartOptionsWithCopyrightHeader( | ||
| options.dartOptions, | ||
| options.copyrightHeader, | ||
| dartOutPath: options.dartOut, | ||
|
||
| basePath: options.basePath ?? '', | ||
| ); | ||
| const DartGenerator generator = DartGenerator(); | ||
|
|
@@ -484,8 +486,8 @@ class DartGeneratorAdapter implements GeneratorAdapter { | |
| } | ||
|
|
||
| @override | ||
| IOSink? shouldGenerate(PigeonOptions options, FileType _) => | ||
| _openSink(options.dartOut, basePath: options.basePath ?? ''); | ||
| Future<IOSink?> shouldGenerate(PigeonOptions options, FileType _) async => | ||
| await _openSink(options.dartOut, basePath: options.basePath ?? ''); | ||
|
|
||
| @override | ||
| List<Error> validate(PigeonOptions options, Root root) => <Error>[]; | ||
|
|
@@ -524,9 +526,10 @@ class DartTestGeneratorAdapter implements GeneratorAdapter { | |
| } | ||
|
|
||
| @override | ||
| IOSink? shouldGenerate(PigeonOptions options, FileType _) { | ||
| Future<IOSink?> shouldGenerate(PigeonOptions options, FileType _) async { | ||
| if (options.dartTestOut != null) { | ||
| return _openSink(options.dartTestOut, basePath: options.basePath ?? ''); | ||
| return await _openSink(options.dartTestOut, | ||
| basePath: options.basePath ?? ''); | ||
| } else { | ||
| return null; | ||
| } | ||
|
|
@@ -568,11 +571,14 @@ class ObjcGeneratorAdapter implements GeneratorAdapter { | |
| } | ||
|
|
||
| @override | ||
| IOSink? shouldGenerate(PigeonOptions options, FileType fileType) { | ||
| Future<IOSink?> shouldGenerate( | ||
| PigeonOptions options, FileType fileType) async { | ||
| if (fileType == FileType.source) { | ||
| return _openSink(options.objcSourceOut, basePath: options.basePath ?? ''); | ||
| return await _openSink(options.objcSourceOut, | ||
| basePath: options.basePath ?? ''); | ||
| } else { | ||
| return _openSink(options.objcHeaderOut, basePath: options.basePath ?? ''); | ||
| return await _openSink(options.objcHeaderOut, | ||
| basePath: options.basePath ?? ''); | ||
| } | ||
| } | ||
|
|
||
|
|
@@ -610,8 +616,8 @@ class JavaGeneratorAdapter implements GeneratorAdapter { | |
| } | ||
|
|
||
| @override | ||
| IOSink? shouldGenerate(PigeonOptions options, FileType _) => | ||
| _openSink(options.javaOut, basePath: options.basePath ?? ''); | ||
| Future<IOSink?> shouldGenerate(PigeonOptions options, FileType _) async => | ||
| await _openSink(options.javaOut, basePath: options.basePath ?? ''); | ||
|
|
||
| @override | ||
| List<Error> validate(PigeonOptions options, Root root) => <Error>[]; | ||
|
|
@@ -645,8 +651,8 @@ class SwiftGeneratorAdapter implements GeneratorAdapter { | |
| } | ||
|
|
||
| @override | ||
| IOSink? shouldGenerate(PigeonOptions options, FileType _) => | ||
| _openSink(options.swiftOut, basePath: options.basePath ?? ''); | ||
| Future<IOSink?> shouldGenerate(PigeonOptions options, FileType _) async => | ||
| await _openSink(options.swiftOut, basePath: options.basePath ?? ''); | ||
|
|
||
| @override | ||
| List<Error> validate(PigeonOptions options, Root root) => <Error>[]; | ||
|
|
@@ -684,11 +690,14 @@ class CppGeneratorAdapter implements GeneratorAdapter { | |
| } | ||
|
|
||
| @override | ||
| IOSink? shouldGenerate(PigeonOptions options, FileType fileType) { | ||
| Future<IOSink?> shouldGenerate( | ||
| PigeonOptions options, FileType fileType) async { | ||
| if (fileType == FileType.source) { | ||
| return _openSink(options.cppSourceOut, basePath: options.basePath ?? ''); | ||
| return await _openSink(options.cppSourceOut, | ||
| basePath: options.basePath ?? ''); | ||
| } else { | ||
| return _openSink(options.cppHeaderOut, basePath: options.basePath ?? ''); | ||
| return await _openSink(options.cppHeaderOut, | ||
| basePath: options.basePath ?? ''); | ||
| } | ||
| } | ||
|
|
||
|
|
@@ -726,8 +735,8 @@ class KotlinGeneratorAdapter implements GeneratorAdapter { | |
| } | ||
|
|
||
| @override | ||
| IOSink? shouldGenerate(PigeonOptions options, FileType _) => | ||
| _openSink(options.kotlinOut, basePath: options.basePath ?? ''); | ||
| Future<IOSink?> shouldGenerate(PigeonOptions options, FileType _) async => | ||
| await _openSink(options.kotlinOut, basePath: options.basePath ?? ''); | ||
|
|
||
| @override | ||
| List<Error> validate(PigeonOptions options, Root root) => <Error>[]; | ||
|
|
@@ -1562,7 +1571,8 @@ ${_argParser.usage}'''; | |
| } | ||
|
|
||
| for (final GeneratorAdapter adapter in safeGeneratorAdapters) { | ||
| final IOSink? sink = adapter.shouldGenerate(options, FileType.source); | ||
| final IOSink? sink = | ||
| await adapter.shouldGenerate(options, FileType.source); | ||
| if (sink != null) { | ||
| final List<Error> adapterErrors = | ||
| adapter.validate(options, parseResults.root); | ||
|
|
@@ -1605,7 +1615,7 @@ ${_argParser.usage}'''; | |
|
|
||
| for (final GeneratorAdapter adapter in safeGeneratorAdapters) { | ||
| for (final FileType fileType in adapter.fileTypeList) { | ||
| final IOSink? sink = adapter.shouldGenerate(options, fileType); | ||
| final IOSink? sink = await adapter.shouldGenerate(options, fileType); | ||
| if (sink != null) { | ||
| adapter.generate(sink, options, parseResults.root, fileType); | ||
| await sink.flush(); | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.