Directory getSdkDir()

in lib/cli_util.dart [23:58]


Directory getSdkDir([List<String>? cliArgs]) {
  // Look for --dart-sdk on the command line.
  if (cliArgs != null) {
    var index = cliArgs.indexOf('--dart-sdk');

    if (index != -1 && (index + 1 < cliArgs.length)) {
      return Directory(cliArgs[index + 1]);
    }

    for (var arg in cliArgs) {
      if (arg.startsWith('--dart-sdk=')) {
        return Directory(arg.substring('--dart-sdk='.length));
      }
    }
  }

  // Look in env['DART_SDK']
  var sdkLocation = Platform.environment['DART_SDK'];
  if (sdkLocation != null) {
    return Directory(sdkLocation);
  }

  // Look relative to the dart executable.
  var platformExecutable = File(Platform.executable);
  var sdkDirectory = platformExecutable.parent.parent;
  if (isSdkDir(sdkDirectory)) return sdkDirectory;

  // Handle the case where Platform.executable is a sibling of the SDK directory
  // (this happens during internal testing).
  sdkDirectory =
      Directory(path.join(platformExecutable.parent.path, 'dart-sdk'));
  if (isSdkDir(sdkDirectory)) return sdkDirectory;

  // Use `Platform.resolvedExecutable`.
  return Directory(getSdkPath());
}