diff --git a/packages/flutter_tools/lib/src/commands/analyze.dart b/packages/flutter_tools/lib/src/commands/analyze.dart index 3d8ca6b3669b..1a015ae70109 100644 --- a/packages/flutter_tools/lib/src/commands/analyze.dart +++ b/packages/flutter_tools/lib/src/commands/analyze.dart @@ -65,7 +65,7 @@ class AnalyzeCommand extends FlutterCommand { String get description => "Analyze the project's Dart code."; @override - Future> get requiredArtifacts async => const { + Set get requiredArtifacts => const { DevelopmentArtifact.universal, }; diff --git a/packages/flutter_tools/lib/src/commands/build_aot.dart b/packages/flutter_tools/lib/src/commands/build_aot.dart index 548fbd47c6d6..9d4362cd5ff4 100644 --- a/packages/flutter_tools/lib/src/commands/build_aot.dart +++ b/packages/flutter_tools/lib/src/commands/build_aot.dart @@ -16,7 +16,7 @@ import '../resident_runner.dart'; import '../runner/flutter_command.dart'; import 'build.dart'; -class BuildAotCommand extends BuildSubCommand with TargetPlatformBasedDevelopmentArtifacts { +class BuildAotCommand extends BuildSubCommand { BuildAotCommand() { usesTargetOption(); addBuildModeFlags(); diff --git a/packages/flutter_tools/lib/src/commands/build_apk.dart b/packages/flutter_tools/lib/src/commands/build_apk.dart index 8a2ac3cb347e..2660932b2db2 100644 --- a/packages/flutter_tools/lib/src/commands/build_apk.dart +++ b/packages/flutter_tools/lib/src/commands/build_apk.dart @@ -6,7 +6,7 @@ import 'dart:async'; import '../android/apk.dart'; import '../project.dart'; -import '../runner/flutter_command.dart' show DevelopmentArtifact, FlutterCommandResult; +import '../runner/flutter_command.dart' show FlutterCommandResult; import 'build.dart'; class BuildApkCommand extends BuildSubCommand { @@ -34,12 +34,6 @@ class BuildApkCommand extends BuildSubCommand { @override final String name = 'apk'; - @override - Future> get requiredArtifacts async => const { - DevelopmentArtifact.universal, - DevelopmentArtifact.android, - }; - @override final String description = 'Build an Android APK file from your app.\n\n' 'This command can build debug and release versions of your application. \'debug\' builds support ' diff --git a/packages/flutter_tools/lib/src/commands/build_ios.dart b/packages/flutter_tools/lib/src/commands/build_ios.dart index f82dab9085ad..b90e33297589 100644 --- a/packages/flutter_tools/lib/src/commands/build_ios.dart +++ b/packages/flutter_tools/lib/src/commands/build_ios.dart @@ -10,7 +10,7 @@ import '../base/utils.dart'; import '../build_info.dart'; import '../globals.dart'; import '../ios/mac.dart'; -import '../runner/flutter_command.dart' show DevelopmentArtifact, FlutterCommandResult; +import '../runner/flutter_command.dart' show FlutterCommandResult; import 'build.dart'; class BuildIOSCommand extends BuildSubCommand { @@ -48,12 +48,6 @@ class BuildIOSCommand extends BuildSubCommand { @override final String description = 'Build an iOS application bundle (Mac OS X host only).'; - @override - Future> get requiredArtifacts async => const { - DevelopmentArtifact.universal, - DevelopmentArtifact.iOS, - }; - @override Future runCommand() async { final bool forSimulator = argResults['simulator']; diff --git a/packages/flutter_tools/lib/src/commands/build_web.dart b/packages/flutter_tools/lib/src/commands/build_web.dart index 020aa79ebd20..42ce09872ca6 100644 --- a/packages/flutter_tools/lib/src/commands/build_web.dart +++ b/packages/flutter_tools/lib/src/commands/build_web.dart @@ -20,7 +20,7 @@ class BuildWebCommand extends BuildSubCommand { } @override - Future> get requiredArtifacts async => const { + Set get requiredArtifacts => const { DevelopmentArtifact.universal, DevelopmentArtifact.web, }; diff --git a/packages/flutter_tools/lib/src/commands/channel.dart b/packages/flutter_tools/lib/src/commands/channel.dart index d9672f62c191..1b0bd0fdbeae 100644 --- a/packages/flutter_tools/lib/src/commands/channel.dart +++ b/packages/flutter_tools/lib/src/commands/channel.dart @@ -31,9 +31,6 @@ class ChannelCommand extends FlutterCommand { @override String get invocation => '${runner.executableName} $name []'; - @override - Future> get requiredArtifacts async => const {}; - @override Future runCommand() async { switch (argResults.rest.length) { diff --git a/packages/flutter_tools/lib/src/commands/clean.dart b/packages/flutter_tools/lib/src/commands/clean.dart index 65682e8f4d9c..c427e39e0057 100644 --- a/packages/flutter_tools/lib/src/commands/clean.dart +++ b/packages/flutter_tools/lib/src/commands/clean.dart @@ -22,9 +22,6 @@ class CleanCommand extends FlutterCommand { @override final String description = 'Delete the build/ and .dart_tool/ directories.'; - @override - Future> get requiredArtifacts async => const {}; - @override Future runCommand() async { final FlutterProject flutterProject = await FlutterProject.current(); diff --git a/packages/flutter_tools/lib/src/commands/config.dart b/packages/flutter_tools/lib/src/commands/config.dart index 89d0142283cd..dd25ec70e20c 100644 --- a/packages/flutter_tools/lib/src/commands/config.dart +++ b/packages/flutter_tools/lib/src/commands/config.dart @@ -44,9 +44,6 @@ class ConfigCommand extends FlutterCommand { @override bool get shouldUpdateCache => false; - @override - Future> get requiredArtifacts async => const {}; - @override String get usageFooter { // List all config settings. diff --git a/packages/flutter_tools/lib/src/commands/format.dart b/packages/flutter_tools/lib/src/commands/format.dart index 1b0c407891b6..9d5d56e1a352 100644 --- a/packages/flutter_tools/lib/src/commands/format.dart +++ b/packages/flutter_tools/lib/src/commands/format.dart @@ -39,11 +39,6 @@ class FormatCommand extends FlutterCommand { @override final String description = 'Format one or more dart files.'; - @override - Future> get requiredArtifacts async => const { - DevelopmentArtifact.universal, - }; - @override String get invocation => '${runner.executableName} $name '; diff --git a/packages/flutter_tools/lib/src/commands/generate.dart b/packages/flutter_tools/lib/src/commands/generate.dart index 2694e2d13c37..d1026acac41f 100644 --- a/packages/flutter_tools/lib/src/commands/generate.dart +++ b/packages/flutter_tools/lib/src/commands/generate.dart @@ -21,11 +21,6 @@ class GenerateCommand extends FlutterCommand { @override bool get hidden => true; - @override - Future> get requiredArtifacts async => const { - DevelopmentArtifact.universal, - }; - @override Future runCommand() async { Cache.releaseLockEarly(); diff --git a/packages/flutter_tools/lib/src/commands/ide_config.dart b/packages/flutter_tools/lib/src/commands/ide_config.dart index ad1034094bb1..2a64070add8c 100644 --- a/packages/flutter_tools/lib/src/commands/ide_config.dart +++ b/packages/flutter_tools/lib/src/commands/ide_config.dart @@ -42,9 +42,6 @@ class IdeConfigCommand extends FlutterCommand { @override final String name = 'ide-config'; - @override - Future> get requiredArtifacts async => const {}; - @override final String description = 'Configure the IDE for use in the Flutter tree.\n\n' 'If run on a Flutter tree that is already configured for the IDE, this ' diff --git a/packages/flutter_tools/lib/src/commands/inject_plugins.dart b/packages/flutter_tools/lib/src/commands/inject_plugins.dart index d13c19b6b62a..4acc452bae89 100644 --- a/packages/flutter_tools/lib/src/commands/inject_plugins.dart +++ b/packages/flutter_tools/lib/src/commands/inject_plugins.dart @@ -23,9 +23,6 @@ class InjectPluginsCommand extends FlutterCommand { @override final bool hidden; - @override - Future> get requiredArtifacts async => const {}; - @override Future runCommand() async { final FlutterProject project = await FlutterProject.current(); diff --git a/packages/flutter_tools/lib/src/commands/install.dart b/packages/flutter_tools/lib/src/commands/install.dart index 5e0d43c882c8..ab439062cbbd 100644 --- a/packages/flutter_tools/lib/src/commands/install.dart +++ b/packages/flutter_tools/lib/src/commands/install.dart @@ -11,7 +11,7 @@ import '../device.dart'; import '../globals.dart'; import '../runner/flutter_command.dart'; -class InstallCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts { +class InstallCommand extends FlutterCommand { InstallCommand() { requiresPubspecYaml(); } diff --git a/packages/flutter_tools/lib/src/commands/logs.dart b/packages/flutter_tools/lib/src/commands/logs.dart index c97c62ce3542..3e0ec0021512 100644 --- a/packages/flutter_tools/lib/src/commands/logs.dart +++ b/packages/flutter_tools/lib/src/commands/logs.dart @@ -26,9 +26,6 @@ class LogsCommand extends FlutterCommand { @override final String description = 'Show log output for running Flutter apps.'; - @override - Future> get requiredArtifacts async => const {}; - Device device; @override diff --git a/packages/flutter_tools/lib/src/commands/packages.dart b/packages/flutter_tools/lib/src/commands/packages.dart index e31b3ad4fd90..befbe878ae60 100644 --- a/packages/flutter_tools/lib/src/commands/packages.dart +++ b/packages/flutter_tools/lib/src/commands/packages.dart @@ -27,11 +27,6 @@ class PackagesCommand extends FlutterCommand { @override final String description = 'Commands for managing Flutter packages.'; - @override - Future> get requiredArtifacts async => const { - DevelopmentArtifact.universal, - }; - @override Future runCommand() async => null; } diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart index 2630591fb821..e72ae1aa0593 100644 --- a/packages/flutter_tools/lib/src/commands/run.dart +++ b/packages/flutter_tools/lib/src/commands/run.dart @@ -20,7 +20,7 @@ import '../runner/flutter_command.dart'; import '../tracing.dart'; import 'daemon.dart'; -abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopmentArtifacts { +abstract class RunCommandBase extends FlutterCommand { // Used by run and drive commands. RunCommandBase({ bool verboseHelp = false }) { addBuildModeFlags(defaultToRelease: false, verboseHelp: verboseHelp); @@ -64,7 +64,6 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment } bool get traceStartup => argResults['trace-startup']; - String get route => argResults['route']; } diff --git a/packages/flutter_tools/lib/src/commands/test.dart b/packages/flutter_tools/lib/src/commands/test.dart index bb4db08ef37d..61a65103addb 100644 --- a/packages/flutter_tools/lib/src/commands/test.dart +++ b/packages/flutter_tools/lib/src/commands/test.dart @@ -86,11 +86,6 @@ class TestCommand extends FastFlutterCommand { valueHelp: 'jobs'); } - @override - Future> get requiredArtifacts async => { - DevelopmentArtifact.universal, - }; - @override String get name => 'test'; diff --git a/packages/flutter_tools/lib/src/commands/update_packages.dart b/packages/flutter_tools/lib/src/commands/update_packages.dart index d18123ed132c..c6f8fb331102 100644 --- a/packages/flutter_tools/lib/src/commands/update_packages.dart +++ b/packages/flutter_tools/lib/src/commands/update_packages.dart @@ -84,11 +84,6 @@ class UpdatePackagesCommand extends FlutterCommand { @override final bool hidden; - @override - Future> get requiredArtifacts async => { - DevelopmentArtifact.universal, - }; - Future _downloadCoverageData() async { final Status status = logger.startProgress( 'Downloading lcov data for package:flutter...', diff --git a/packages/flutter_tools/lib/src/commands/upgrade.dart b/packages/flutter_tools/lib/src/commands/upgrade.dart index 1b7cf7a8c48c..f39e33b7f300 100644 --- a/packages/flutter_tools/lib/src/commands/upgrade.dart +++ b/packages/flutter_tools/lib/src/commands/upgrade.dart @@ -36,11 +36,6 @@ class UpgradeCommand extends FlutterCommand { @override bool get shouldUpdateCache => false; - @override - Future> get requiredArtifacts async => { - DevelopmentArtifact.universal, - }; - @override Future runCommand() async { final UpgradeCommandRunner upgradeCommandRunner = UpgradeCommandRunner(); diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart index e0bb8529316f..4341b1d6f8e0 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart @@ -534,7 +534,7 @@ abstract class FlutterCommand extends Command { // Populate the cache. We call this before pub get below so that the sky_engine // package is available in the flutter cache for pub to find. if (shouldUpdateCache) { - await cache.updateAll(await requiredArtifacts); + await cache.updateAll(requiredArtifacts); } if (shouldRunPub) { @@ -557,7 +557,7 @@ abstract class FlutterCommand extends Command { /// /// Defaults to [DevelopmentArtifact.universal], /// [DevelopmentArtifact.android], and [DevelopmentArtifact.iOS]. - Future> get requiredArtifacts async => const { + Set get requiredArtifacts => const { DevelopmentArtifact.universal, DevelopmentArtifact.iOS, DevelopmentArtifact.android, @@ -677,90 +677,6 @@ abstract class FlutterCommand extends Command { ApplicationPackageStore applicationPackages; } -/// A mixin which applies an implementation of [requiredArtifacts] that only -/// downloads artifacts corresponding to an attached device. -mixin DeviceBasedDevelopmentArtifacts on FlutterCommand { - @override - Future> get requiredArtifacts async { - // If there are no attached devices, use the default configuration. - // Otherwise, only add development artifacts which correspond to a - // connected device. - final List devices = await deviceManager.getDevices().toList(); - if (devices.isEmpty) { - return super.requiredArtifacts; - } - final Set artifacts = { - DevelopmentArtifact.universal, - }; - for (Device device in devices) { - final TargetPlatform targetPlatform = await device.targetPlatform; - switch (targetPlatform) { - case TargetPlatform.android_arm: - case TargetPlatform.android_arm64: - case TargetPlatform.android_x64: - case TargetPlatform.android_x86: - artifacts.add(DevelopmentArtifact.android); - break; - case TargetPlatform.web: - artifacts.add(DevelopmentArtifact.web); - break; - case TargetPlatform.ios: - artifacts.add(DevelopmentArtifact.iOS); - break; - case TargetPlatform.darwin_x64: - case TargetPlatform.fuchsia: - case TargetPlatform.tester: - case TargetPlatform.windows_x64: - case TargetPlatform.linux_x64: - // No artifacts currently supported. - break; - } - } - return artifacts; - } -} - -/// A mixin which applies an implementation of [requiredArtifacts] that only -/// downloads artifacts corresponding to a target device. -mixin TargetPlatformBasedDevelopmentArtifacts on FlutterCommand { - @override - Future> get requiredArtifacts async { - // If there is no specified target device, fallback to the default - // confiugration. - final String rawTargetPlatform = argResults['target-platform']; - final TargetPlatform targetPlatform = getTargetPlatformForName(rawTargetPlatform); - if (targetPlatform == null) { - return super.requiredArtifacts; - } - - final Set artifacts = { - DevelopmentArtifact.universal, - }; - switch (targetPlatform) { - case TargetPlatform.android_arm: - case TargetPlatform.android_arm64: - case TargetPlatform.android_x64: - case TargetPlatform.android_x86: - artifacts.add(DevelopmentArtifact.android); - break; - case TargetPlatform.web: - artifacts.add(DevelopmentArtifact.web); - break; - case TargetPlatform.ios: - artifacts.add(DevelopmentArtifact.iOS); - break; - case TargetPlatform.darwin_x64: - case TargetPlatform.fuchsia: - case TargetPlatform.tester: - case TargetPlatform.windows_x64: - case TargetPlatform.linux_x64: - // No artifacts currently supported. - break; - } - return artifacts; - } -} - /// A command which runs less analytics and checks to speed up startup time. abstract class FastFlutterCommand extends FlutterCommand { @override diff --git a/packages/flutter_tools/test/runner/flutter_command_test.dart b/packages/flutter_tools/test/runner/flutter_command_test.dart index 6e7227b3314e..e1cfc2ac7b9c 100644 --- a/packages/flutter_tools/test/runner/flutter_command_test.dart +++ b/packages/flutter_tools/test/runner/flutter_command_test.dart @@ -2,10 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/base/time.dart'; -import 'package:flutter_tools/src/device.dart'; import 'package:flutter_tools/src/usage.dart'; import 'package:flutter_tools/src/base/common.dart'; import 'package:flutter_tools/src/runner/flutter_command.dart'; @@ -155,81 +153,6 @@ void main() { SystemClock: () => clock, Usage: () => usage, }); - }); - group('Development artifacts', () { - final MockDeviceManager mockDeviceManager = MockDeviceManager(); - testUsingContext('should only request artifacts corresponding to connected devices', () async { - when(mockDeviceManager.getDevices()).thenAnswer((Invocation invocation) { - return Stream.fromIterable([ - MockDevice(TargetPlatform.android_arm), - ]); - }); - - expect(await FakeDeviceBasedDevelopmentArtifacts().requiredArtifacts, unorderedEquals({ - DevelopmentArtifact.universal, - DevelopmentArtifact.android, - })); - - when(mockDeviceManager.getDevices()).thenAnswer((Invocation invocation) { - return Stream.fromIterable([ - MockDevice(TargetPlatform.ios), - ]); - }); - - expect(await FakeDeviceBasedDevelopmentArtifacts().requiredArtifacts, unorderedEquals({ - DevelopmentArtifact.universal, - DevelopmentArtifact.iOS, - })); - - when(mockDeviceManager.getDevices()).thenAnswer((Invocation invocation) { - return Stream.fromIterable([ - MockDevice(TargetPlatform.ios), - MockDevice(TargetPlatform.android_arm), - ]); - }); - - expect(await FakeDeviceBasedDevelopmentArtifacts().requiredArtifacts, unorderedEquals({ - DevelopmentArtifact.universal, - DevelopmentArtifact.iOS, - DevelopmentArtifact.android, - })); - - when(mockDeviceManager.getDevices()).thenAnswer((Invocation invocation) { - return Stream.fromIterable([ - MockDevice(TargetPlatform.web), - ]); - }); - - expect(await FakeDeviceBasedDevelopmentArtifacts().requiredArtifacts, unorderedEquals({ - DevelopmentArtifact.universal, - DevelopmentArtifact.web, - })); - }, overrides: { - DeviceManager: () => mockDeviceManager, - }); }); } - -class MockDeviceManager extends Mock implements DeviceManager {} -class MockDevice extends Mock implements Device { - MockDevice(this._targetPlatform); - - final TargetPlatform _targetPlatform; - - @override - Future get targetPlatform async => _targetPlatform; -} - -class FakeDeviceBasedDevelopmentArtifacts extends FlutterCommand with DeviceBasedDevelopmentArtifacts { - @override - String get description => null; - - @override - String get name => null; - - @override - Future runCommand() { - return null; - } -} diff --git a/packages/flutter_tools/test/runner/utils.dart b/packages/flutter_tools/test/runner/utils.dart index e69e50d37f2a..b7b1ec12920a 100644 --- a/packages/flutter_tools/test/runner/utils.dart +++ b/packages/flutter_tools/test/runner/utils.dart @@ -14,7 +14,7 @@ typedef CommandFunction = Future Function(); class DummyFlutterCommand extends FlutterCommand { DummyFlutterCommand({ - this.shouldUpdateCache = false, + this.shouldUpdateCache = false, this.noUsagePath = false, this.commandFunction, });