Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix errors
  • Loading branch information
stuartmorgan-g committed Apr 1, 2021
commit 243cc2ddec8f6ece8b668a44023c0b813062a36f
4 changes: 2 additions & 2 deletions script/tool/lib/src/analyze_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ class AnalyzeCommand extends PluginCommand {
continue;
}

final bool allowed = argResults[_customAnalysisFlag].any(
(String directory) =>
final bool allowed = (argResults[_customAnalysisFlag] as List<String>)
.any((String directory) =>
directory != null &&
directory.isNotEmpty &&
p.isWithin(p.join(packagesDir.path, directory), file.path));
Expand Down
38 changes: 23 additions & 15 deletions script/tool/lib/src/build_examples_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -40,20 +40,28 @@ class BuildExamplesCommand extends PluginCommand {

@override
Future<Null> run() async {
if (!argResults[kIpa] &&
!argResults[kApk] &&
!argResults[kLinux] &&
!argResults[kMacos] &&
!argResults[kWeb] &&
!argResults[kWindows]) {
print('None of --linux, --macos, --web, --windows, --apk, or --ipa were '
'specified, so not building anything.');
final List<String> platformSwitches = <String>[
kApk,
kIpa,
kLinux,
kMacos,
kWeb,
kWindows,
];
final Map<String, bool> platforms = {
for (final String platform in platformSwitches)
platform: argResults[platform] as bool
};
if (!platforms.values.any((bool enabled) => enabled)) {
print(
'None of ${platformSwitches.map((String platform) => '--$platform').join(', ')} '
'were specified, so not building anything.');
return;
}
final String flutterCommand =
LocalPlatform().isWindows ? 'flutter.bat' : 'flutter';

final String enableExperiment = argResults[kEnableExperiment];
final String enableExperiment = argResults[kEnableExperiment] as String;

checkSharding();
final List<String> failingPackages = <String>[];
Expand All @@ -62,7 +70,7 @@ class BuildExamplesCommand extends PluginCommand {
final String packageName =
p.relative(example.path, from: packagesDir.path);

if (argResults[kLinux]) {
if (platforms[kLinux]) {
print('\nBUILDING Linux for $packageName');
if (isLinuxPlugin(plugin, fileSystem)) {
int buildExitCode = await processRunner.runAndStream(
Expand All @@ -82,7 +90,7 @@ class BuildExamplesCommand extends PluginCommand {
}
}

if (argResults[kMacos]) {
if (platforms[kMacos]) {
print('\nBUILDING macOS for $packageName');
if (isMacOsPlugin(plugin, fileSystem)) {
int exitCode = await processRunner.runAndStream(
Expand All @@ -102,7 +110,7 @@ class BuildExamplesCommand extends PluginCommand {
}
}

if (argResults[kWeb]) {
if (platforms[kWeb]) {
print('\nBUILDING web for $packageName');
if (isWebPlugin(plugin, fileSystem)) {
int buildExitCode = await processRunner.runAndStream(
Expand All @@ -122,7 +130,7 @@ class BuildExamplesCommand extends PluginCommand {
}
}

if (argResults[kWindows]) {
if (platforms[kWindows]) {
print('\nBUILDING Windows for $packageName');
if (isWindowsPlugin(plugin, fileSystem)) {
int buildExitCode = await processRunner.runAndStream(
Expand All @@ -142,7 +150,7 @@ class BuildExamplesCommand extends PluginCommand {
}
}

if (argResults[kIpa]) {
if (platforms[kIpa]) {
print('\nBUILDING IPA for $packageName');
if (isIosPlugin(plugin, fileSystem)) {
final int exitCode = await processRunner.runAndStream(
Expand All @@ -163,7 +171,7 @@ class BuildExamplesCommand extends PluginCommand {
}
}

if (argResults[kApk]) {
if (platforms[kApk]) {
print('\nBUILDING APK for $packageName');
if (isAndroidPlugin(plugin, fileSystem)) {
final int exitCode = await processRunner.runAndStream(
Expand Down
49 changes: 27 additions & 22 deletions script/tool/lib/src/common.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
// found in the LICENSE file.

import 'dart:async';
import 'dart:convert';
import 'dart:io' as io;
import 'dart:math';

Expand Down Expand Up @@ -53,8 +54,9 @@ bool isFlutterPackage(FileSystemEntity entity, FileSystem fileSystem) {
try {
final File pubspecFile =
fileSystem.file(p.join(entity.path, 'pubspec.yaml'));
final YamlMap pubspecYaml = loadYaml(pubspecFile.readAsStringSync());
final YamlMap dependencies = pubspecYaml['dependencies'];
final YamlMap pubspecYaml =
loadYaml(pubspecFile.readAsStringSync()) as YamlMap;
final YamlMap dependencies = pubspecYaml['dependencies'] as YamlMap;
if (dependencies == null) {
return false;
}
Expand Down Expand Up @@ -89,16 +91,17 @@ bool pluginSupportsPlatform(
try {
final File pubspecFile =
fileSystem.file(p.join(entity.path, 'pubspec.yaml'));
final YamlMap pubspecYaml = loadYaml(pubspecFile.readAsStringSync());
final YamlMap flutterSection = pubspecYaml['flutter'];
final YamlMap pubspecYaml =
loadYaml(pubspecFile.readAsStringSync()) as YamlMap;
final YamlMap flutterSection = pubspecYaml['flutter'] as YamlMap;
if (flutterSection == null) {
return false;
}
final YamlMap pluginSection = flutterSection['plugin'];
final YamlMap pluginSection = flutterSection['plugin'] as YamlMap;
if (pluginSection == null) {
return false;
}
final YamlMap platforms = pluginSection['platforms'];
final YamlMap platforms = pluginSection['platforms'] as YamlMap;
if (platforms == null) {
// Legacy plugin specs are assumed to support iOS and Android.
if (!pluginSection.containsKey('platforms')) {
Expand Down Expand Up @@ -245,8 +248,8 @@ abstract class PluginCommand extends Command<Null> {
}

void checkSharding() {
final int shardIndex = int.tryParse(argResults[_shardIndexArg]);
final int shardCount = int.tryParse(argResults[_shardCountArg]);
final int shardIndex = int.tryParse(argResults[_shardIndexArg] as String);
final int shardCount = int.tryParse(argResults[_shardCountArg] as String);
if (shardIndex == null) {
usageException('$_shardIndexArg must be an integer');
}
Expand Down Expand Up @@ -301,10 +304,12 @@ abstract class PluginCommand extends Command<Null> {
/// "client library" package, which declares the API for the plugin, as
/// well as one or more platform-specific implementations.
Stream<Directory> _getAllPlugins() async* {
Set<String> plugins = Set<String>.from(argResults[_pluginsArg]);
Set<String> plugins =
Set<String>.from(argResults[_pluginsArg] as List<String>);
final Set<String> excludedPlugins =
Set<String>.from(argResults[_excludeArg]);
final bool runOnChangedPackages = argResults[_runOnChangedPackagesArg];
Set<String>.from(argResults[_excludeArg] as List<String>);
final bool runOnChangedPackages =
argResults[_runOnChangedPackagesArg] as bool;
if (plugins.isEmpty && runOnChangedPackages) {
plugins = await _getChangedPackages();
}
Expand All @@ -315,7 +320,7 @@ abstract class PluginCommand extends Command<Null> {
if (_isDartPackage(entity)) {
if (!excludedPlugins.contains(entity.basename) &&
(plugins.isEmpty || plugins.contains(p.basename(entity.path)))) {
yield entity;
yield entity as Directory;
}
} else if (entity is Directory) {
// Look for Dart packages under this top-level directory.
Expand All @@ -334,7 +339,7 @@ abstract class PluginCommand extends Command<Null> {
(plugins.isEmpty ||
plugins.contains(relativePath) ||
plugins.contains(basenamePath))) {
yield subdir;
yield subdir as Directory;
}
}
}
Expand Down Expand Up @@ -401,7 +406,7 @@ abstract class PluginCommand extends Command<Null> {
/// Throws tool exit if [gitDir] nor root directory is a git directory.
Future<GitVersionFinder> retrieveVersionFinder() async {
final String rootDir = packagesDir.parent.absolute.path;
String baseSha = argResults[_kBaseSha];
String baseSha = argResults[_kBaseSha] as String;

GitDir baseGitDir = gitDir;
if (baseGitDir == null) {
Expand Down Expand Up @@ -490,8 +495,8 @@ class ProcessRunner {
Future<io.ProcessResult> run(String executable, List<String> args,
{Directory workingDir,
bool exitOnError = false,
stdoutEncoding = io.systemEncoding,
stderrEncoding = io.systemEncoding}) async {
Encoding stdoutEncoding = io.systemEncoding,
Encoding stderrEncoding = io.systemEncoding}) async {
return io.Process.run(executable, args,
workingDirectory: workingDir?.path,
stdoutEncoding: stdoutEncoding,
Expand Down Expand Up @@ -571,22 +576,22 @@ class GitVersionFinder {
final io.ProcessResult changedFilesCommand = await baseGitDir
.runCommand(<String>['diff', '--name-only', '$baseSha', 'HEAD']);
print('Determine diff with base sha: $baseSha');
final String changedFilesStdout = changedFilesCommand.stdout.toString() ?? '';
final String changedFilesStdout =
changedFilesCommand.stdout.toString() ?? '';
if (changedFilesStdout.isEmpty) {
return <String>[];
}
final List<String> changedFiles = changedFilesStdout
.split('\n')
..removeWhere((element) => element.isEmpty);
final List<String> changedFiles = changedFilesStdout.split('\n')
..removeWhere((element) => element.isEmpty);
return changedFiles.toList();
}

/// Get the package version specified in the pubspec file in `pubspecPath` and at the revision of `gitRef`.
Future<Version> getPackageVersion(String pubspecPath, String gitRef) async {
final io.ProcessResult gitShow =
await baseGitDir.runCommand(<String>['show', '$gitRef:$pubspecPath']);
final String fileContent = gitShow.stdout;
final String versionString = loadYaml(fileContent)['version'];
final String fileContent = gitShow.stdout as String;
final String versionString = loadYaml(fileContent)['version'] as String;
return versionString == null ? null : Version.parse(versionString);
}

Expand Down
4 changes: 2 additions & 2 deletions script/tool/lib/src/create_all_plugins_app_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -188,10 +188,10 @@ dev_dependencies:${_pubspecMapString(pubspec.devDependencies)}
if (entry.value is VersionConstraint) {
buffer.write(' ${entry.key}: ${entry.value}');
} else if (entry.value is SdkDependency) {
final SdkDependency dep = entry.value;
final SdkDependency dep = entry.value as SdkDependency;
buffer.write(' ${entry.key}: \n sdk: ${dep.sdk}');
} else if (entry.value is PathDependency) {
final PathDependency dep = entry.value;
final PathDependency dep = entry.value as PathDependency;
buffer.write(' ${entry.key}: \n path: ${dep.path}');
} else {
throw UnimplementedError(
Expand Down
23 changes: 12 additions & 11 deletions script/tool/lib/src/drive_examples_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,10 @@ class DriveExamplesCommand extends PluginCommand {
Future<Null> run() async {
checkSharding();
final List<String> failingTests = <String>[];
final bool isLinux = argResults[kLinux];
final bool isMacos = argResults[kMacos];
final bool isWeb = argResults[kWeb];
final bool isWindows = argResults[kWindows];
final bool isLinux = argResults[kLinux] == true;
final bool isMacos = argResults[kMacos] == true;
final bool isWeb = argResults[kWeb] == true;
final bool isWindows = argResults[kWindows] == true;
await for (Directory plugin in getPlugins()) {
final String flutterCommand =
LocalPlatform().isWindows ? 'flutter.bat' : 'flutter';
Expand Down Expand Up @@ -125,7 +125,8 @@ Tried searching for the following:

final List<String> driveArgs = <String>['drive'];

final String enableExperiment = argResults[kEnableExperiment];
final String enableExperiment =
argResults[kEnableExperiment] as String;
if (enableExperiment.isNotEmpty) {
driveArgs.add('--enable-experiment=$enableExperiment');
}
Expand Down Expand Up @@ -191,12 +192,12 @@ Tried searching for the following:

Future<bool> pluginSupportedOnCurrentPlatform(
FileSystemEntity plugin, FileSystem fileSystem) async {
final bool isAndroid = argResults[kAndroid];
final bool isIOS = argResults[kIos];
final bool isLinux = argResults[kLinux];
final bool isMacos = argResults[kMacos];
final bool isWeb = argResults[kWeb];
final bool isWindows = argResults[kWindows];
final bool isAndroid = argResults[kAndroid] == true;
final bool isIOS = argResults[kIos] == true;
final bool isLinux = argResults[kLinux] == true;
final bool isMacos = argResults[kMacos] == true;
final bool isWeb = argResults[kWeb] == true;
final bool isWindows = argResults[kWindows] == true;
if (isAndroid) {
return (isAndroidPlugin(plugin, fileSystem));
}
Expand Down
20 changes: 11 additions & 9 deletions script/tool/lib/src/firebase_test_lab_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ class FirebaseTestLabCommand extends PluginCommand {
'config',
'set',
'project',
argResults['project'],
argResults['project'] as String,
]);
if (exitCode == 0) {
_print('\nFirebase project configured.');
Expand Down Expand Up @@ -119,7 +119,7 @@ class FirebaseTestLabCommand extends PluginCommand {
final Directory androidDirectory =
fileSystem.directory(p.join(exampleDirectory.path, 'android'));

final String enableExperiment = argResults[kEnableExperiment];
final String enableExperiment = argResults[kEnableExperiment] as String;
final String encodedEnableExperiment =
Uri.encodeComponent('--enable-experiment=$enableExperiment');

Expand Down Expand Up @@ -166,15 +166,17 @@ class FirebaseTestLabCommand extends PluginCommand {
// Look for tests recursively in folders that start with 'test' and that
// live in the root or example folders.
bool isTestDir(FileSystemEntity dir) {
return p.basename(dir.path).startsWith('test') ||
p.basename(dir.path) == 'integration_test';
return dir is Directory &&
(p.basename(dir.path).startsWith('test') ||
p.basename(dir.path) == 'integration_test');
}

final List<FileSystemEntity> testDirs =
package.listSync().where(isTestDir).toList();
final List<Directory> testDirs =
package.listSync().where(isTestDir).cast<Directory>().toList();
final Directory example =
fileSystem.directory(p.join(package.path, 'example'));
testDirs.addAll(example.listSync().where(isTestDir).toList());
testDirs.addAll(
example.listSync().where(isTestDir).cast<Directory>().toList());
for (Directory testDir in testDirs) {
bool isE2ETest(FileSystemEntity file) {
return file.path.endsWith('_e2e.dart') ||
Expand Down Expand Up @@ -205,7 +207,7 @@ class FirebaseTestLabCommand extends PluginCommand {
continue;
}
final String buildId = io.Platform.environment['CIRRUS_BUILD_ID'];
final String testRunId = argResults['test-run-id'];
final String testRunId = argResults['test-run-id'] as String;
final String resultsDir =
'plugins_android_test/$packageName/$buildId/$testRunId/${resultsCounter++}/';
final List<String> args = <String>[
Expand All @@ -224,7 +226,7 @@ class FirebaseTestLabCommand extends PluginCommand {
'--results-bucket=${argResults['results-bucket']}',
'--results-dir=${resultsDir}',
];
for (String device in argResults['device']) {
for (String device in argResults['device'] as List<String>) {
args.addAll(<String>['--device', device]);
}
exitCode = await processRunner.runAndStream('gcloud', args,
Expand Down
11 changes: 5 additions & 6 deletions script/tool/lib/src/format_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class FormatCommand extends PluginCommand {
await _formatJava(googleFormatterPath);
await _formatCppAndObjectiveC();

if (argResults['fail-on-change']) {
if (argResults['fail-on-change'] == true) {
final bool modified = await _didModifyAnything();
if (modified) {
throw ToolExit(1);
Expand All @@ -61,15 +61,14 @@ class FormatCommand extends PluginCommand {

print('\n\n');

if (modifiedFiles.stdout.isEmpty) {
final String stdout = modifiedFiles.stdout as String;
if (stdout.isEmpty) {
print('All files formatted correctly.');
return false;
}

print('These files are not formatted correctly (see diff below):');
LineSplitter.split(modifiedFiles.stdout)
.map((String line) => ' $line')
.forEach(print);
LineSplitter.split(stdout).map((String line) => ' $line').forEach(print);

print('\nTo fix run "pub global activate flutter_plugin_tools && '
'pub global run flutter_plugin_tools format" or copy-paste '
Expand All @@ -95,7 +94,7 @@ class FormatCommand extends PluginCommand {
// 'ProcessException: Argument list too long'.
final Iterable<List<String>> batches = partition(allFiles, 100);
for (List<String> batch in batches) {
await processRunner.runAndStream(argResults['clang-format'],
await processRunner.runAndStream(argResults['clang-format'] as String,
<String>['-i', '--style=Google']..addAll(batch),
workingDir: packagesDir, exitOnError: true);
}
Expand Down
Loading