resolveProjectDartSdkVersion function

String resolveProjectDartSdkVersion(
  1. Directory rootDir
)

Resolves the Dart SDK version to use for the project in rootDir.

Resolution order: .tool-versions in rootDirenvironment.sdk from rootDir/pubspec.yaml → VersionConstants.minSupportedSdkVersion.

Throws FailureException if a version found in .tool-versions is invalid.

Implementation

String resolveProjectDartSdkVersion(final Directory rootDir) {
  final fromToolVersions = ToolVersionsIO.readDartVersionFromToolVersions([
    rootDir,
  ]);
  if (fromToolVersions != null) {
    ensureValidVersionConstraint(
      fromToolVersions,
      sourceDescription: '(from .tool-versions)',
    );
    return fromToolVersions;
  }

  final pubspecFile = File('${rootDir.path}/pubspec.yaml');
  if (pubspecFile.existsSync()) {
    final fromPubspec = TenantProjectPubspec.fromFile(
      pubspecFile,
    ).environmentSdkConstraint();
    if (fromPubspec != null) {
      ensureValidVersionConstraint(
        fromPubspec,
        sourceDescription: '(from pubspec.yaml)',
      );
      return fromPubspec;
    }
  }

  return VersionConstants.minSupportedSdkVersion;
}