buildSdkSummary2 function
Future<Uint8List>
buildSdkSummary2({
- required ResourceProvider resourceProvider,
- required String sdkPath,
- String? embedderYamlPath,
Build summary for SDK at the given sdkPath
.
If embedderYamlPath
is provided, then libraries from this file are
appended to the libraries of the specified SDK.
Implementation
Future<Uint8List> buildSdkSummary2({
required ResourceProvider resourceProvider,
required String sdkPath,
String? embedderYamlPath,
}) async {
var sdk = FolderBasedDartSdk(
resourceProvider,
resourceProvider.getFolder(sdkPath),
);
// Append libraries from the embedder.
if (embedderYamlPath != null) {
var file = resourceProvider.getFile(embedderYamlPath);
var content = file.readAsStringSync();
var map = loadYaml(content) as YamlMap;
var embedderSdk = EmbedderSdk(
resourceProvider,
{file.parent: map},
languageVersion: sdk.languageVersion,
);
for (var library in embedderSdk.sdkLibraries) {
var uriStr = library.shortName;
if (sdk.libraryMap.getLibrary(uriStr) == null) {
sdk.libraryMap.setLibrary(uriStr, library);
}
}
}
var librarySources = sdk.sdkLibraries.map((e) {
return sdk.mapDartUri(e.shortName)!;
}).toList();
var analysisContext = AnalysisContextImpl(
SynchronousSession(AnalysisOptionsImpl(), DeclaredVariables()),
SourceFactory([DartUriResolver(sdk)]),
);
return _Builder(
analysisContext,
sdk.allowedExperimentsJson,
sdk.languageVersion,
librarySources,
).build2();
}