You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
samples/web/_tool/verify_packages.dart

64 lines
1.6 KiB

// Copyright 2020 The Flutter team. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file
import 'dart:io';
import 'package:path/path.dart' as p;
import 'common.dart';
void main() async {
final packageDirs =
listPackageDirs(Directory.current)
.map((path) => p.relative(path, from: Directory.current.path))
.where((path) => !p.dirname(path).startsWith('_'))
.toList();
print('Package dirs:\n${packageDirs.map((path) => ' $path').join('\n')}');
final results = <bool>[];
for (var i = 0; i < packageDirs.length; i++) {
final dir = packageDirs[i];
logWrapped(ansiMagenta, '\n$dir (${i + 1} of ${packageDirs.length})');
final upgradeResult = await run(dir, 'flutter', [
'pub',
'pub',
'upgrade',
'--no-precompile',
]);
results.add(upgradeResult);
if (!upgradeResult) {
// skipping analyze when `pub upgrade` fails.
results.add(false);
continue;
}
results.add(
await run(dir, 'dart', [
'analyze',
'--fatal-infos',
'--fatal-warnings',
'.',
]),
);
_printStatus(results);
}
if (results.any((v) => !v)) {
exitCode = 1;
}
}
void _printStatus(List<bool> results) {
var successCount = results.where((t) => t).length;
var success = (successCount == results.length);
var pct = 100 * successCount / results.length;
logWrapped(
success ? ansiGreen : ansiRed,
'$successCount of ${results.length} (${pct.toStringAsFixed(2)}%)',
);
}