Add override frontend_server snapshot for fuchsia_reload command (#23162)
diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart
index 59c20c7..39bd512 100644
--- a/packages/flutter_tools/lib/src/artifacts.dart
+++ b/packages/flutter_tools/lib/src/artifacts.dart
@@ -299,3 +299,31 @@
throw Exception('Unsupported platform $platform.');
}
}
+
+/// An implementation of [Artifacts] that provides individual overrides.
+///
+/// If an artifact is not provided, the lookup delegates to the parent.
+/// Currently only allows overriding the location of the [frontendServer].
+class OverrideArtifacts implements Artifacts {
+ /// Creates a new [OverrideArtifacts].
+ ///
+ /// [parent] must be provided.
+ OverrideArtifacts({
+ @required this.parent,
+ this.frontendServer,
+ }) : assert(parent != null);
+
+ final Artifacts parent;
+ final File frontendServer;
+
+ @override
+ String getArtifactPath(Artifact artifact, [TargetPlatform platform, BuildMode mode]) {
+ if (artifact == Artifact.frontendServerSnapshotForEngineDartSdk && frontendServer != null) {
+ return frontendServer.path;
+ }
+ return parent.getArtifactPath(artifact, platform, mode);
+ }
+
+ @override
+ String getEngineType(TargetPlatform platform, [BuildMode mode]) => parent.getEngineType(platform, mode);
+}