Skip to content

Commit e29c2c5

Browse files
authored
Merge pull request #21 from gibahjoe/dev
Fixed windows post gen issues
2 parents e524a25 + bdd18da commit e29c2c5

File tree

5 files changed

+122
-102
lines changed

5 files changed

+122
-102
lines changed

openapi-generator-annotations/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 1.1.2
2+
3+
- Added support for skipping post build actions
4+
15
## 1.1.1
26

37
- Fixed build issue

openapi-generator-cli/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 1.1.2
2+
3+
- Updated Dart2-api support
4+
15
## 1.1.0
26

37
- Added support for **_dart2-api_** from [dart-ogurets](https://github.com/dart-ogurets/dart-openapi-maven)

openapi-generator/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 1.1.2
2+
3+
- Added support for skipping post run steps
4+
- Fixed failing post build steps in windows
5+
16
## 1.1.1
27

38
- Fixed build issue

openapi-generator/lib/src/openapi_generator_runner.dart

Lines changed: 107 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -17,121 +17,128 @@ class OpenapiGenerator extends GeneratorForAnnotation<annots.Openapi> {
1717
@override
1818
FutureOr<String> generateForAnnotatedElement(
1919
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}';
5558
}
56-
command = '$command$separator-o$separator${outputDirectory}';
57-
}
5859

59-
command = appendTypeMappingCommandArgs(annotation, command, separator);
60+
command = appendTypeMappingCommandArgs(annotation, command, separator);
6061

61-
command =
62-
appendAdditionalPropertiesCommandArgs(annotation, command, separator);
62+
command =
63+
appendAdditionalPropertiesCommandArgs(annotation, command, separator);
6364

64-
command = appendSkipValidateSpecCommandArgs(annotation, command, separator);
65+
command =
66+
appendSkipValidateSpecCommandArgs(annotation, command, separator);
6567

66-
print('OpenapiGenerator :: [${command.replaceAll(separator, ' ')}]');
68+
print('OpenapiGenerator :: [${command.replaceAll(separator, ' ')}]');
6769

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);
7173

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'] ?? '';
7476

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+
}
8385

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, ' ')}]');
8991

90-
var exitCode = 0;
91-
var pr = await Process.run('java', arguments);
92+
var exitCode = 0;
93+
var pr = await Process.run('java', arguments);
9294

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;
9799

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 :: Skipping install step because you said so...');
103+
return '';
104+
}
103105

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+
runInShell: Platform.isWindows,
109+
workingDirectory: '$outputDirectory');
107110

108-
print(installOutput.stderr);
109-
print(
110-
'OpenapiGenerator :: Install exited with code ${installOutput.exitCode}');
111-
exitCode = installOutput.exitCode;
112-
}
111+
print(installOutput.stderr);
112+
print(
113+
'OpenapiGenerator :: Install exited with code ${installOutput.exitCode}');
114+
exitCode = installOutput.exitCode;
115+
}
113116

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;
117+
if (!_readFieldValueAsBool(annotation, 'runSourceGenOnOutput')) {
118+
print(
119+
'OpenapiGenerator :: Skipping source gen step because you said so...');
120+
return '';
121+
}
122+
123+
if (exitCode == 0) {
124+
//run buildrunner to generate files
125+
switch (generatorName) {
126+
case annots.Generator.DART:
127+
case annots.Generator.DART2_API:
128+
print(
129+
'OpenapiGenerator :: skipping source gen because generator does not need it ::');
130+
break;
131+
case annots.Generator.DART_DIO:
132+
case annots.Generator.DART_JAGUAR:
133+
var runnerOutput = await runSourceGen(outputDirectory);
134+
print(
135+
'OpenapiGenerator :: build runner exited with code ${runnerOutput.exitCode} ::');
136+
break;
137+
}
134138
}
139+
} catch (e) {
140+
print('Error generating spec ${e}');
141+
rethrow;
135142
}
136143
return '';
137144
}
@@ -140,7 +147,7 @@ class OpenapiGenerator extends GeneratorForAnnotation<annots.Openapi> {
140147
print('OpenapiGenerator :: running source code generations ::');
141148
var c = 'pub run build_runner build --delete-conflicting-outputs';
142149
var runnerOutput = await Process.run('flutter', c.split(' ').toList(),
143-
workingDirectory: '$outputDirectory');
150+
runInShell: Platform.isWindows, workingDirectory: '$outputDirectory');
144151
print(runnerOutput.stderr);
145152
return runnerOutput;
146153
}

openapi-generator/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ dependencies:
1010
build: '>=1.3.0 <=1.10.3'
1111
source_gen: ^0.9.7+1
1212
path: ^1.7.0
13-
openapi_generator_annotations: ^1.1.1
13+
openapi_generator_annotations: ^1.1.2
1414
analyzer: '>=0.39.8 <=0.40.1'
15-
openapi_generator_cli: ^1.1.0
15+
openapi_generator_cli: ^1.1.2
1616
generic_reader: ^0.1.5
1717

1818
dev_dependencies:

0 commit comments

Comments
 (0)