@@ -17,121 +17,126 @@ class OpenapiGenerator extends GeneratorForAnnotation<annots.Openapi> {
17
17
@override
18
18
FutureOr <String > generateForAnnotatedElement (
19
19
Element element, ConstantReader annotation, BuildStep buildStep) async {
20
- if (element is ! ClassElement ) {
21
- final friendlyName = element.displayName;
22
- throw InvalidGenerationSourceError (
23
- 'Generator cannot target `$friendlyName `.' ,
24
- todo: 'Remove the [Openapi] annotation from `$friendlyName `.' ,
25
- );
26
- }
27
- genericReader
28
- ..addDecoder< annots.Generator > (
29
- (constantReader) => constantReader.enumValue< annots.Generator > ())
30
- ..addDecoder< annots.DioDateLibrary > (
31
- (constantReader) => constantReader.enumValue< annots.DioDateLibrary > ())
32
- ..addDecoder< annots.SerializationFormat > ((constantReader) =>
33
- constantReader.enumValue< annots.SerializationFormat > ());
34
- var separator = '?*?' ;
35
- var command = 'generate' ;
36
-
37
- command = appendInputFileCommandArgs (annotation, command, separator);
38
-
39
- command = appendTemplateDirCommandArgs (annotation, command, separator);
40
-
41
- var generatorName = genericReader
42
- .getEnum< annots.Generator > (annotation.peek ('generatorName' ));
43
- var generator = getGeneratorNameFromEnum (generatorName);
44
- command = '$command $separator -g$separator $generator ' ;
45
-
46
- var outputDirectory =
47
- _readFieldValueAsString (annotation, 'outputDirectory' , '' );
48
- if (outputDirectory.isNotEmpty) {
49
- var alwaysRun = _readFieldValueAsBool (annotation, 'alwaysRun' , false );
50
- var filePath = path.join (outputDirectory, 'lib/api.dart' );
51
- if (! alwaysRun && await File (filePath).exists ()) {
52
- print (
53
- 'OpenapiGenerator :: Codegen skipped because alwaysRun is set to [$alwaysRun ] and $filePath already exists' );
54
- return '' ;
20
+ try {
21
+ if (element is ! ClassElement ) {
22
+ final friendlyName = element.displayName;
23
+ throw InvalidGenerationSourceError (
24
+ 'Generator cannot target `$friendlyName `.' ,
25
+ todo: 'Remove the [Openapi] annotation from `$friendlyName `.' ,
26
+ );
27
+ }
28
+ genericReader
29
+ ..addDecoder< annots.Generator > (
30
+ (constantReader) => constantReader.enumValue< annots.Generator > ())
31
+ ..addDecoder< annots.DioDateLibrary > ((constantReader) =>
32
+ constantReader.enumValue< annots.DioDateLibrary > ())
33
+ ..addDecoder< annots.SerializationFormat > ((constantReader) =>
34
+ constantReader.enumValue< annots.SerializationFormat > ());
35
+ var separator = '?*?' ;
36
+ var command = 'generate' ;
37
+
38
+ command = appendInputFileCommandArgs (annotation, command, separator);
39
+
40
+ command = appendTemplateDirCommandArgs (annotation, command, separator);
41
+
42
+ var generatorName = genericReader
43
+ .getEnum< annots.Generator > (annotation.peek ('generatorName' ));
44
+ var generator = getGeneratorNameFromEnum (generatorName);
45
+ command = '$command $separator -g$separator $generator ' ;
46
+
47
+ var outputDirectory =
48
+ _readFieldValueAsString (annotation, 'outputDirectory' , '' );
49
+ if (outputDirectory.isNotEmpty) {
50
+ var alwaysRun = _readFieldValueAsBool (annotation, 'alwaysRun' , false );
51
+ var filePath = path.join (outputDirectory, 'lib/api.dart' );
52
+ if (! alwaysRun && await File (filePath).exists ()) {
53
+ print (
54
+ 'OpenapiGenerator :: Codegen skipped because alwaysRun is set to [$alwaysRun ] and $filePath already exists' );
55
+ return '' ;
56
+ }
57
+ command = '$command $separator -o$separator ${outputDirectory }' ;
55
58
}
56
- command = '$command $separator -o$separator ${outputDirectory }' ;
57
- }
58
59
59
- command = appendTypeMappingCommandArgs (annotation, command, separator);
60
+ command = appendTypeMappingCommandArgs (annotation, command, separator);
60
61
61
- command =
62
- appendAdditionalPropertiesCommandArgs (annotation, command, separator);
62
+ command =
63
+ appendAdditionalPropertiesCommandArgs (annotation, command, separator);
63
64
64
- command = appendSkipValidateSpecCommandArgs (annotation, command, separator);
65
+ command =
66
+ appendSkipValidateSpecCommandArgs (annotation, command, separator);
65
67
66
- print ('OpenapiGenerator :: [${command .replaceAll (separator , ' ' )}]' );
68
+ print ('OpenapiGenerator :: [${command .replaceAll (separator , ' ' )}]' );
67
69
68
- var binPath = (await Isolate .resolvePackageUri (
69
- Uri .parse ('package:openapi_generator_cli/openapi-generator.jar' )))
70
- .toFilePath (windows: Platform .isWindows);
70
+ var binPath = (await Isolate .resolvePackageUri (
71
+ Uri .parse ('package:openapi_generator_cli/openapi-generator.jar' )))
72
+ .toFilePath (windows: Platform .isWindows);
71
73
72
- // Include java environment variables in command
73
- var JAVA_OPTS = Platform .environment['JAVA_OPTS' ] ?? '' ;
74
+ // Include java environment variables in command
75
+ var JAVA_OPTS = Platform .environment['JAVA_OPTS' ] ?? '' ;
74
76
75
- var arguments = [
76
- '-jar' ,
77
- "${"${binPath }" }" ,
78
- ...command.split (separator).toList (),
79
- ];
80
- if (JAVA_OPTS .isNotEmpty) {
81
- arguments.insert (0 , JAVA_OPTS );
82
- }
77
+ var arguments = [
78
+ '-jar' ,
79
+ "${"${binPath }" }" ,
80
+ ...command.split (separator).toList (),
81
+ ];
82
+ if (JAVA_OPTS .isNotEmpty) {
83
+ arguments.insert (0 , JAVA_OPTS );
84
+ }
83
85
84
- var spaced = '| |' ;
85
- var horiborder = '------------------------------------------------------' ;
86
- print (
87
- '$horiborder \n $spaced \n | Openapi generator for dart |\n $spaced \n $spaced \n $horiborder ' );
88
- print ('Executing command [${command .replaceAll (separator , ' ' )}]' );
86
+ var spaced = '| |' ;
87
+ var horiborder = '------------------------------------------------------' ;
88
+ print (
89
+ '$horiborder \n $spaced \n | Openapi generator for dart |\n $spaced \n $spaced \n $horiborder ' );
90
+ print ('Executing command [${command .replaceAll (separator , ' ' )}]' );
89
91
90
- var exitCode = 0 ;
91
- var pr = await Process .run ('java' , arguments);
92
+ var exitCode = 0 ;
93
+ var pr = await Process .run ('java' , arguments);
92
94
93
- print (pr.stderr);
94
- print (
95
- 'OpenapiGenerator :: Codegen ${pr .exitCode != 0 ? 'Failed' : 'completed successfully' }' );
96
- exitCode = pr.exitCode;
95
+ print (pr.stderr);
96
+ print (
97
+ 'OpenapiGenerator :: Codegen ${pr .exitCode != 0 ? 'Failed' : 'completed successfully' }' );
98
+ exitCode = pr.exitCode;
97
99
98
- // if (!_readFieldValueAsBool(annotation, 'fetchDependencies')) {
99
- // print(
100
- // 'OpenapiGenerator :: Codegen skipping install step because you said so...');
101
- // return '';
102
- // }
100
+ // if (!_readFieldValueAsBool(annotation, 'fetchDependencies')) {
101
+ // print(
102
+ // 'OpenapiGenerator :: Codegen skipping install step because you said so...');
103
+ // return '';
104
+ // }
103
105
104
- if (exitCode == 0 ) {
105
- var installOutput = await Process .run ('flutter' , ['pub' , 'get' ],
106
- workingDirectory: '$outputDirectory ' );
106
+ if (exitCode == 0 ) {
107
+ var installOutput = await Process .run ('flutter' , ['pub' , 'get' ],
108
+ workingDirectory: '$outputDirectory ' );
107
109
108
- print (installOutput.stderr);
109
- print (
110
- 'OpenapiGenerator :: Install exited with code ${installOutput .exitCode }' );
111
- exitCode = installOutput.exitCode;
112
- }
110
+ print (installOutput.stderr);
111
+ print (
112
+ 'OpenapiGenerator :: Install exited with code ${installOutput .exitCode }' );
113
+ exitCode = installOutput.exitCode;
114
+ }
113
115
114
- // if (!_readFieldValueAsBool(annotation, 'runSourceGenOnOutput')) {
115
- // print(
116
- // 'OpenapiGenerator :: Codegen skipping source gen step because you said so...');
117
- // return '';
118
- // }
119
-
120
- if (exitCode == 0 ) {
121
- //run buildrunner to generate files
122
- switch (generatorName) {
123
- case annots.Generator .DART :
124
- case annots.Generator .DART2_API :
125
- print (
126
- 'OpenapiGenerator :: skipping source gen because generator does not need it ::' );
127
- break ;
128
- case annots.Generator .DART_DIO :
129
- case annots.Generator .DART_JAGUAR :
130
- var runnerOutput = await runSourceGen (outputDirectory);
131
- print (
132
- 'OpenapiGenerator :: build runner exited with code ${runnerOutput .exitCode } ::' );
133
- break ;
116
+ // if (!_readFieldValueAsBool(annotation, 'runSourceGenOnOutput')) {
117
+ // print(
118
+ // 'OpenapiGenerator :: Codegen skipping source gen step because you said so...');
119
+ // return '';
120
+ // }
121
+
122
+ if (exitCode == 0 ) {
123
+ //run buildrunner to generate files
124
+ switch (generatorName) {
125
+ case annots.Generator .DART :
126
+ case annots.Generator .DART2_API :
127
+ print (
128
+ 'OpenapiGenerator :: skipping source gen because generator does not need it ::' );
129
+ break ;
130
+ case annots.Generator .DART_DIO :
131
+ case annots.Generator .DART_JAGUAR :
132
+ var runnerOutput = await runSourceGen (outputDirectory);
133
+ print (
134
+ 'OpenapiGenerator :: build runner exited with code ${runnerOutput .exitCode } ::' );
135
+ break ;
136
+ }
134
137
}
138
+ } catch (e) {
139
+ print (e);
135
140
}
136
141
return '' ;
137
142
}
0 commit comments