Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(877)

Unified Diff: pkg/analyzer/tool/summary/build_sdk_summaries.dart

Issue 2345793002: Stop generating index information for SDK and simplify summary generation. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer/tool/summary/build_sdk_summaries.dart
diff --git a/pkg/analyzer/tool/summary/build_sdk_summaries.dart b/pkg/analyzer/tool/summary/build_sdk_summaries.dart
index 8a6645d11c79dce53942b844781669f452b32d6d..fe9302a00ec0b85ae0174773d081c94e119a1ff8 100644
--- a/pkg/analyzer/tool/summary/build_sdk_summaries.dart
+++ b/pkg/analyzer/tool/summary/build_sdk_summaries.dart
@@ -2,83 +2,46 @@ import 'dart:io';
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:analyzer/src/dart/sdk/sdk.dart';
-import 'package:analyzer/src/summary/flat_buffers.dart' as fb;
import 'package:analyzer/src/summary/summary_file_builder.dart';
main(List<String> args) {
- if (args.length < 1) {
+ 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;
}
- String command = args[0];
- if ((command == 'multiple-outputs' || command == 'strong-outputs') &&
- args.length >= 2 &&
- args.length <= 3) {
- bool includeSpec = command != 'strong-outputs';
- //
- // Prepare the output path.
- //
- String outputDirectoryPath = args[1];
- if (!FileSystemEntity.isDirectorySync(outputDirectoryPath)) {
- print("'$outputDirectoryPath' is not a directory.");
- _printUsage();
- exitCode = 1;
- return;
- }
- //
- // Prepare results.
- //
- String sdkPath = args.length > 2 ? args[2] : null;
- SummaryOutput output = _buildMultipleOutputs(sdkPath, includeSpec);
- if (output == null) {
- exitCode = 1;
- return;
- }
- //
- // Write results.
- //
- if (includeSpec) {
- output.spec.writeMultiple(outputDirectoryPath, 'spec');
- }
- output.strong.writeMultiple(outputDirectoryPath, 'strong');
- } else if (command == 'single-output' &&
- args.length >= 2 &&
- args.length <= 3) {
- String outputPath = args[1];
- String sdkPath = args.length > 2 ? args[2] : null;
- //
- // Prepare results.
- //
- SummaryOutput output = _buildMultipleOutputs(sdkPath, true);
- if (output == null) {
- exitCode = 1;
- return;
- }
- //
- // Write results.
- //
- output.write(outputPath);
- } else if (command == 'extract-spec-sum' && args.length == 3) {
- String inputPath = args[1];
- String outputPath = args[2];
- _extractSingleOutput(inputPath, FIELD_SPEC_SUM, outputPath);
- } else if (command == 'extract-spec-index' && args.length == 3) {
- String inputPath = args[1];
- String outputPath = args[2];
- _extractSingleOutput(inputPath, FIELD_SPEC_INDEX, outputPath);
- } else if (command == 'extract-strong-sum' && args.length == 3) {
- String inputPath = args[1];
- String outputPath = args[2];
- _extractSingleOutput(inputPath, FIELD_STRONG_SUM, outputPath);
- } else if (command == 'extract-strong-index' && args.length == 3) {
- String inputPath = args[1];
- String outputPath = args[2];
- _extractSingleOutput(inputPath, FIELD_STRONG_INDEX, outputPath);
+ //
+ // Validate the SDK path.
+ //
+ sdkPath ??= FolderBasedDartSdk
+ .defaultSdkDirectory(PhysicalResourceProvider.INSTANCE)
+ .path;
+ if (!FileSystemEntity.isDirectorySync('$sdkPath/lib')) {
+ print("'$sdkPath/lib' does not exist.");
+ _printUsage();
+ return;
+ }
+
+ //
+ // Handle commands.
+ //
+ if (command == 'build-spec') {
+ _buildSummary(sdkPath, outFilePath, false);
+ } else if (command == 'build-strong') {
+ _buildSummary(sdkPath, outFilePath, true);
} else {
_printUsage();
- exitCode = 1;
return;
}
}
@@ -88,72 +51,23 @@ main(List<String> args) {
*/
const BINARY_NAME = "build_sdk_summaries";
-SummaryOutput _buildMultipleOutputs(String sdkPath, bool includeSpec) {
- //
- // Validate the SDK path.
- //
- if (sdkPath != null) {
- if (!FileSystemEntity.isDirectorySync('$sdkPath/lib')) {
- print("'$sdkPath/lib' does not exist.");
- _printUsage();
- return null;
- }
- } else {
- sdkPath = FolderBasedDartSdk
- .defaultSdkDirectory(PhysicalResourceProvider.INSTANCE)
- .path;
- }
-
- //
- // Build spec and strong outputs.
- //
- BuilderOutput spec = includeSpec ? _buildOutput(sdkPath, false) : null;
- BuilderOutput strong = _buildOutput(sdkPath, true);
- return new SummaryOutput(spec, strong);
-}
-
-BuilderOutput _buildOutput(String sdkPath, bool strongMode) {
- String modeName = strongMode ? 'strong' : 'spec';
- print('Generating $modeName mode summary and index.');
+void _buildSummary(String sdkPath, String outPath, bool strong) {
+ String modeName = strong ? 'strong' : 'spec';
+ print('Generating $modeName mode summary.');
Stopwatch sw = new Stopwatch()..start();
- SummaryBuildConfig config = new SummaryBuildConfig(strongMode: strongMode);
- BuilderOutput output = new SummaryBuilder.forSdk(sdkPath, config).build();
+ List<int> bytes = new SummaryBuilder.forSdk(sdkPath, strong).build();
+ new File(outPath).writeAsBytesSync(bytes, mode: FileMode.WRITE_ONLY);
print('\tDone in ${sw.elapsedMilliseconds} ms.');
- return output;
-}
-
-/**
- * Open the flat buffer in [inputPath] and extract the byte array in the [field]
- * into the [outputPath] file.
- */
-void _extractSingleOutput(String inputPath, int field, String outputPath) {
- List<int> bytes = new File(inputPath).readAsBytesSync();
- fb.BufferContext root = new fb.BufferContext.fromBytes(bytes);
- int tableOffset = root.derefObject(0);
- List<int> fieldBytes =
- const fb.Uint8ListReader().vTableGet(root, tableOffset, field);
- new File(outputPath).writeAsBytesSync(fieldBytes, mode: FileMode.WRITE_ONLY);
}
/**
* Print information about how to use the SDK summaries builder.
*/
void _printUsage() {
-// print('Usage: $BINARY_NAME command output_directory_path [sdk_path]');
print('Usage: $BINARY_NAME command arguments');
print('Where command can be one of the following:');
- print(' multiple-outputs output_directory_path [sdk_path]');
- print(' Generate separate summary and index files.');
- print(' strong-outputs output_directory_path [sdk_path]');
- print(' Generate separate summary and index files (strong mode only).');
- print(' single-output output_file_path [sdk_path]');
- print(' Generate a single file with summary and index.');
- print(' extract-spec-sum input_file output_file');
- print(' Extract the spec-mode summary file.');
- print(' extract-strong-sum input_file output_file');
- print(' Extract the strong-mode summary file.');
- print(' extract-spec-index input_file output_file');
- print(' Extract the spec-mode index file.');
- print(' extract-strong-index input_file output_file');
- print(' Extract the strong-mode index file.');
+ print(' build-spec output_file [sdk_path]');
+ print(' Generate spec mode summary file.');
+ print(' build-strong output_file [sdk_path]');
+ print(' Generate strong mode summary file.');
}

Powered by Google App Engine
This is Rietveld 408576698