@@ -57,9 +57,7 @@ class OpenapiGenerator extends GeneratorForAnnotation<annots.Openapi> {
57
57
: 'dart' ;
58
58
59
59
return generatorV2 (
60
- args: args,
61
- baseCommand: baseCommand,
62
- annotatedPath: buildStep.inputId.path);
60
+ args: args, baseCommand: baseCommand, buildStep: buildStep);
63
61
}
64
62
} catch (e, st) {
65
63
late OutputMessage communication;
@@ -178,7 +176,8 @@ class OpenapiGenerator extends GeneratorForAnnotation<annots.Openapi> {
178
176
FutureOr <String > generatorV2 (
179
177
{required GeneratorArguments args,
180
178
required String baseCommand,
181
- required String annotatedPath}) async {
179
+ required BuildStep buildStep}) async {
180
+ final annotatedPath = buildStep.inputId.path;
182
181
if (args.isRemote) {
183
182
logOutputMessage (
184
183
log: log,
@@ -190,6 +189,16 @@ class OpenapiGenerator extends GeneratorForAnnotation<annots.Openapi> {
190
189
);
191
190
}
192
191
try {
192
+ // Notify build_runner of dependency on inputSpec
193
+ if (args.inputSpec is ! annots.RemoteSpec &&
194
+ ! path.isAbsolute (args.inputSpec.path)) {
195
+ final maybeAssetId =
196
+ AssetId (buildStep.inputId.package, args.inputSpec.path);
197
+ // Check if asset can be read. If so, build_runner will mark the asset
198
+ // as a dependency and re-run the builder when it is modified.
199
+ await buildStep.canRead (maybeAssetId);
200
+ }
201
+
193
202
if (! await hasDiff (args: args) && args.skipIfSpecIsUnchanged) {
194
203
logOutputMessage (
195
204
log: log,
0 commit comments