@@ -106,7 +106,8 @@ class OpenapiGenerator extends GeneratorForAnnotation<annots.Openapi> {
106
106
}
107
107
108
108
if (exitCode == 0 ) {
109
- var installOutput = await Process .run ('flutter' , ['pub' , 'get' ],
109
+ final command = _getCommandWithWrapper ('flutter' , ['pub' , 'get' ], annotation);
110
+ var installOutput = await Process .run (command.executable, command.arguments,
110
111
runInShell: Platform .isWindows,
111
112
workingDirectory: '$outputDirectory ' );
112
113
@@ -133,7 +134,7 @@ class OpenapiGenerator extends GeneratorForAnnotation<annots.Openapi> {
133
134
case annots.Generator .DART_DIO :
134
135
case annots.Generator .DART_JAGUAR :
135
136
try {
136
- var runnerOutput = await runSourceGen (outputDirectory);
137
+ var runnerOutput = await runSourceGen (annotation, outputDirectory);
137
138
print (
138
139
'OpenapiGenerator :: build runner exited with code ${runnerOutput .exitCode } ::' );
139
140
} catch (e) {
@@ -150,11 +151,12 @@ class OpenapiGenerator extends GeneratorForAnnotation<annots.Openapi> {
150
151
return '' ;
151
152
}
152
153
153
- Future <ProcessResult > runSourceGen (String outputDirectory) async {
154
+ Future <ProcessResult > runSourceGen (ConstantReader annotation, String outputDirectory) async {
154
155
print ('OpenapiGenerator :: running source code generation ::' );
155
156
var c = 'pub run build_runner build --delete-conflicting-outputs' ;
157
+ final command = _getCommandWithWrapper ('flutter' , c.split (' ' ).toList (), annotation);
156
158
ProcessResult runnerOutput;
157
- runnerOutput = await Process .run ('flutter' , c. split ( ' ' ). toList () ,
159
+ runnerOutput = await Process .run (command.executable, command.arguments ,
158
160
runInShell: Platform .isWindows, workingDirectory: '$outputDirectory ' );
159
161
print (runnerOutput.stderr);
160
162
return runnerOutput;
@@ -259,6 +261,19 @@ class OpenapiGenerator extends GeneratorForAnnotation<annots.Openapi> {
259
261
.join (',' );
260
262
}
261
263
264
+ Command _getCommandWithWrapper (String command, List <String > arguments, ConstantReader annotation){
265
+ final wrapper = annotation.read ('additionalProperties' )? .read ('wrapper' )? .enumValue< annots.Wrapper > () ?? annots.Wrapper .none;
266
+ switch (wrapper){
267
+ case annots.Wrapper .flutterw:
268
+ return Command ('./flutterw' , arguments);
269
+ case annots.Wrapper .fvm:
270
+ return Command ('fvm' , [command, ...arguments]);
271
+ case annots.Wrapper .none:
272
+ default :
273
+ return Command (command, arguments);
274
+ }
275
+ }
276
+
262
277
String _readFieldValueAsString (ConstantReader annotation, String fieldName,
263
278
[String defaultValue]) {
264
279
var reader = annotation.read (fieldName);
@@ -280,3 +295,10 @@ class OpenapiGenerator extends GeneratorForAnnotation<annots.Openapi> {
280
295
return reader.isNull ? defaultValue : reader.boolValue ?? defaultValue;
281
296
}
282
297
}
298
+
299
+ class Command {
300
+ final String executable;
301
+ final List <String > arguments;
302
+
303
+ Command (this .executable, this .arguments);
304
+ }
0 commit comments