blob: 4a3a60c6d349d99280abf519e6b4b016a251f0ac [file] [log] [blame]
// Copyright 2014 The Flutter Authors. 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:async';
// ignore: import_of_legacy_library_into_null_safe
import 'package:dwds/dwds.dart';
import '../artifacts.dart';
import '../base/file_system.dart';
/// Provides paths to SDK files for dart SDK used in flutter.
class SdkWebConfigurationProvider extends SdkConfigurationProvider {
SdkWebConfigurationProvider(this._artifacts);
final Artifacts _artifacts;
SdkConfiguration? _configuration;
/// Create and validate configuration matching the default SDK layout.
/// Create configuration matching the default SDK layout.
@override
Future<SdkConfiguration> get configuration async {
if (_configuration == null) {
final String sdkDir = _artifacts.getHostArtifact(HostArtifact.flutterWebSdk).path;
final String unsoundSdkSummaryPath = _artifacts.getHostArtifact(HostArtifact.webPlatformKernelDill).path;
final String soundSdkSummaryPath = _artifacts.getHostArtifact(HostArtifact.webPlatformSoundKernelDill).path;
final String librariesPath = _artifacts.getHostArtifact(HostArtifact.flutterWebLibrariesJson).path;
_configuration = SdkConfiguration(
sdkDirectory: sdkDir,
unsoundSdkSummaryPath: unsoundSdkSummaryPath,
soundSdkSummaryPath: soundSdkSummaryPath,
librariesPath: librariesPath,
);
}
return _configuration!;
}
/// Validate that SDK configuration exists on disk.
static void validate(SdkConfiguration configuration, { required FileSystem fileSystem }) {
configuration.validateSdkDir(fileSystem: fileSystem);
configuration.validateSummaries(fileSystem: fileSystem);
configuration.validateLibrariesSpec(fileSystem: fileSystem);
}
}