Files
sdk/pkg/analyzer/tool/summary/build_sdk_summaries.dart
T
Konstantin Shcheglov 9f986d2501 Migrate package:analyzer to null safety.
Change-Id: Iffe4370431587e46a141ddc72a86ceec29c163b2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/176486
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2021-02-01 18:56:04 +00:00

70 lines
1.8 KiB
Dart

// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
// for details. 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:analyzer/dart/sdk/build_sdk_summary.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:cli_util/cli_util.dart';
void main(List<String> args) {
String command;
String outFilePath;
String? sdkPath;
if (args.length == 2) {
command = args[0];
outFilePath = args[1];
} else if (args.length == 3) {
command = args[0];
outFilePath = args[1];
sdkPath = args[2];
} else {
_printUsage();
exitCode = 1;
return;
}
//
// Validate the SDK path.
//
sdkPath ??= getSdkPath();
if (!FileSystemEntity.isDirectorySync('$sdkPath/lib')) {
print("'$sdkPath/lib' does not exist.");
_printUsage();
return;
}
//
// Handle commands.
//
if (command == 'build' || command == 'build-strong') {
_buildSummary(sdkPath, outFilePath);
} else {
_printUsage();
return;
}
}
/// The name of the SDK summaries builder application.
const BINARY_NAME = "build_sdk_summaries";
void _buildSummary(String sdkPath, String outPath) {
print('Generating summary.');
Stopwatch sw = Stopwatch()..start();
List<int> bytes = buildSdkSummary(
resourceProvider: PhysicalResourceProvider.INSTANCE,
sdkPath: sdkPath,
);
File(outPath).writeAsBytesSync(bytes, mode: FileMode.writeOnly);
print('\tDone in ${sw.elapsedMilliseconds} ms.');
}
/// Print information about how to use the SDK summaries builder.
void _printUsage() {
print('Usage: $BINARY_NAME command arguments');
print('Where command can be one of the following:');
print(' build output_file [sdk_path]');
print(' Generate summary file.');
}