| // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
| // for details. 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:io'; |
| |
| import 'package:path/path.dart' as path; |
| |
| /// Return `true` if the given [sdkPath] is valid, i.e. has all required |
| /// artifacts. |
| String computePlatformBinariesPath(String sdkPath) { |
| // Try the given SDK path. |
| { |
| String location = path.join(sdkPath, 'lib', '_internal'); |
| if (new File(path.join(location, 'vm_platform_strong.dill')).existsSync()) { |
| return location; |
| } |
| } |
| |
| // The given SDK path does not work. |
| // Then we're probably running on bots, in 'xcodebuild/ReleaseX64'. |
| // In this case 'vm_platform.dill' is next to the 'dart'. |
| return path.dirname(Platform.resolvedExecutable); |
| } |
| |
| String getSdkPath([List<String> args]) { |
| // Look for --dart-sdk on the command line. |
| if (args != null) { |
| int index = args.indexOf('--dart-sdk'); |
| |
| if (index != -1 && (index + 1 < args.length)) { |
| return args[index + 1]; |
| } |
| |
| for (String arg in args) { |
| if (arg.startsWith('--dart-sdk=')) { |
| return arg.substring('--dart-sdk='.length); |
| } |
| } |
| } |
| |
| // Look in env['DART_SDK'] |
| if (Platform.environment['DART_SDK'] != null) { |
| return Platform.environment['DART_SDK']; |
| } |
| |
| // Use Platform.resolvedExecutable. |
| return path.dirname(path.dirname(Platform.resolvedExecutable)); |
| } |