Unverified Commit 5fa80171 authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

[flutter_tools] remove train and inject-plugins command (#67766)

The train command does nothing and was originally added to provide a no-output default for generating app-jit snapshots. The inject-plugins command is only for a repo-only analysis check, which is not necessary since we regenerate during pub get.

#29805
parent 92702a28
......@@ -64,9 +64,6 @@ Future<void> run(List<String> arguments) async {
print('$clock Test package imports...');
await verifyNoTestPackageImports(flutterRoot);
print('$clock Generated plugin registrants...');
await verifyGeneratedPluginRegistrants(flutterRoot);
print('$clock Bad imports (framework)...');
await verifyNoBadImportsInFlutter(flutterRoot);
......@@ -369,44 +366,6 @@ Future<void> verifyNoTestPackageImports(String workingDirectory) async {
}
}
Future<void> verifyGeneratedPluginRegistrants(String flutterRoot) async {
final Directory flutterRootDir = Directory(flutterRoot);
final Map<String, List<File>> packageToRegistrants = <String, List<File>>{};
for (final File file in flutterRootDir.listSync(recursive: true).whereType<File>().where(_isGeneratedPluginRegistrant)) {
final String package = _getPackageFor(file, flutterRootDir);
final List<File> registrants = packageToRegistrants.putIfAbsent(package, () => <File>[]);
registrants.add(file);
}
final Set<String> outOfDate = <String>{};
for (final String package in packageToRegistrants.keys) {
final Map<File, String> fileToContent = <File, String>{};
for (final File f in packageToRegistrants[package]) {
fileToContent[f] = f.readAsStringSync();
}
await runCommand(flutter, <String>['inject-plugins'],
workingDirectory: package,
outputMode: OutputMode.discard,
);
for (final File registrant in fileToContent.keys) {
if (registrant.readAsStringSync() != fileToContent[registrant]) {
outOfDate.add(registrant.path);
}
}
}
if (outOfDate.isNotEmpty) {
exitWithError(<String>[
'${bold}The following GeneratedPluginRegistrants are out of date:$reset',
for (String registrant in outOfDate) ' - $registrant',
'\nRun "flutter inject-plugins" in the package that\'s out of date.',
]);
}
}
Future<void> verifyNoBadImportsInFlutter(String workingDirectory) async {
final List<String> errors = <String>[];
final String libPath = path.join(workingDirectory, 'packages', 'flutter', 'lib');
......@@ -1294,15 +1253,6 @@ List<T> _deepSearch<T>(Map<T, Set<T>> map, T start, [ Set<T> seen ]) {
return null;
}
String _getPackageFor(File entity, Directory flutterRootDir) {
for (Directory dir = entity.parent; dir != flutterRootDir; dir = dir.parent) {
if (File(path.join(dir.path, 'pubspec.yaml')).existsSync()) {
return dir.path;
}
}
throw ArgumentError('$entity is not within a dart package.');
}
bool _isGeneratedPluginRegistrant(File file) {
final String filename = path.basename(file.path);
return !file.path.contains('.pub-cache')
......
......@@ -28,7 +28,6 @@ import 'src/commands/format.dart';
import 'src/commands/generate.dart';
import 'src/commands/generate_localizations.dart';
import 'src/commands/ide_config.dart';
import 'src/commands/inject_plugins.dart';
import 'src/commands/install.dart';
import 'src/commands/logs.dart';
import 'src/commands/make_host_app_editable.dart';
......@@ -39,7 +38,6 @@ import 'src/commands/screenshot.dart';
import 'src/commands/shell_completion.dart';
import 'src/commands/symbolize.dart';
import 'src/commands/test.dart';
import 'src/commands/train.dart';
import 'src/commands/update_packages.dart';
import 'src/commands/upgrade.dart';
import 'src/features.dart';
......@@ -126,8 +124,6 @@ Future<void> main(List<String> args) async {
),
// Development-only commands. These are always hidden,
IdeConfigCommand(),
InjectPluginsCommand(),
TrainingCommand(),
UpdatePackagesCommand(),
], verbose: verbose,
muteCommandLogging: muteCommandLogging,
......
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import '../globals.dart' as globals;
import '../plugins.dart';
import '../project.dart';
import '../runner/flutter_command.dart';
class InjectPluginsCommand extends FlutterCommand {
InjectPluginsCommand() {
requiresPubspecYaml();
}
@override
final String name = 'inject-plugins';
@override
final String description = 'Re-generates the GeneratedPluginRegistrants.';
@override
final bool hidden = true;
@override
Future<Set<DevelopmentArtifact>> get requiredArtifacts async => const <DevelopmentArtifact>{};
@override
Future<FlutterCommandResult> runCommand() async {
final FlutterProject project = FlutterProject.current();
await refreshPluginsList(project, checkProjects: true);
await injectPlugins(project, checkProjects: true);
final bool result = hasPlugins(project);
if (result) {
globals.printStatus('GeneratedPluginRegistrants successfully written.');
} else {
globals.printStatus('This project does not use plugins, no GeneratedPluginRegistrants have been created.');
}
return FlutterCommandResult.success();
}
}
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import '../runner/flutter_command.dart';
/// This command is run when generating the app-JIT snapshot for the tool, so it cannot access the Cache
/// or any artifacts that haven't been downloaded yet.
class TrainingCommand extends FlutterCommand {
@override
String get description => 'training run for app-jit snapshot';
@override
String get name => 'training';
@override
bool get hidden => true;
@override
bool get shouldUpdateCache => false;
@override
Future<FlutterCommandResult> runCommand() async {
// This command does not do anything yet :).
return FlutterCommandResult.success();
}
}
......@@ -22,9 +22,7 @@ void main() {
]);
// Development tools.
expect(result.stdout, isNot(contains('ide-config')));
expect(result.stdout, isNot(contains('update-packages')));
expect(result.stdout, isNot(contains('inject-plugins')));
// Deprecated.
expect(result.stdout, isNot(contains('make-host-app-editable')));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment