sdk_web_configuration.dart 1.79 KB
Newer Older
1 2 3 4 5 6
// 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';

7
// ignore: import_of_legacy_library_into_null_safe
8 9 10 11 12 13 14 15 16 17 18
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;
19
  SdkConfiguration? _configuration;
20 21 22 23

  /// Create and validate configuration matching the default SDK layout.
  /// Create configuration matching the default SDK layout.
  @override
24
  Future<SdkConfiguration> get configuration async {
25 26
    if (_configuration == null) {
      final String sdkDir = _artifacts.getHostArtifact(HostArtifact.flutterWebSdk).path;
27
      final String weakSdkSummaryPath = _artifacts.getHostArtifact(HostArtifact.webPlatformDDCKernelDill).path;
28
      final String soundSdkSummaryPath = _artifacts.getHostArtifact(HostArtifact.webPlatformDDCSoundKernelDill).path;
29 30 31 32
      final String librariesPath = _artifacts.getHostArtifact(HostArtifact.flutterWebLibrariesJson).path;

      _configuration = SdkConfiguration(
        sdkDirectory: sdkDir,
33
        weakSdkSummaryPath: weakSdkSummaryPath,
34 35 36 37
        soundSdkSummaryPath: soundSdkSummaryPath,
        librariesPath: librariesPath,
      );
    }
38
    return _configuration!;
39 40 41
  }

  /// Validate that SDK configuration exists on disk.
42
  static void validate(SdkConfiguration configuration, { required FileSystem fileSystem }) {
43 44 45 46 47
    configuration.validateSdkDir(fileSystem: fileSystem);
    configuration.validateSummaries(fileSystem: fileSystem);
    configuration.validateLibrariesSpec(fileSystem: fileSystem);
  }
}