| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file |  | 
| 2 // for details. All rights reserved. Use of this source code is governed by a |  | 
| 3 // BSD-style license that can be found in the LICENSE file. |  | 
| 4 |  | 
| 5 library sdk_source; |  | 
| 6 |  | 
| 7 import 'dart:async'; |  | 
| 8 |  | 
| 9 import '../../pkg/pathos/lib/path.dart' as path; |  | 
| 10 |  | 
| 11 import 'io.dart'; |  | 
| 12 import 'package.dart'; |  | 
| 13 import 'pubspec.dart'; |  | 
| 14 import 'sdk.dart' as sdk; |  | 
| 15 import 'source.dart'; |  | 
| 16 import 'utils.dart'; |  | 
| 17 import 'version.dart'; |  | 
| 18 |  | 
| 19 /// A package source that uses libraries from the Dart SDK. |  | 
| 20 class SdkSource extends Source { |  | 
| 21   final String name = "sdk"; |  | 
| 22   final bool shouldCache = false; |  | 
| 23 |  | 
| 24   /// SDK packages are not individually versioned. Instead, their version is |  | 
| 25   /// inferred from the revision number of the SDK itself. |  | 
| 26   Future<Pubspec> describe(PackageId id) { |  | 
| 27     return defer(() { |  | 
| 28       var packageDir = _getPackagePath(id); |  | 
| 29       // TODO(rnystrom): What if packageDir is null? |  | 
| 30       var pubspec = new Pubspec.load(id.name, packageDir, systemCache.sources); |  | 
| 31       // Ignore the pubspec's version, and use the SDK's. |  | 
| 32       return new Pubspec(id.name, sdk.version, pubspec.dependencies, |  | 
| 33           pubspec.devDependencies, pubspec.environment); |  | 
| 34     }); |  | 
| 35   } |  | 
| 36 |  | 
| 37   /// Since all the SDK files are already available locally, installation just |  | 
| 38   /// involves symlinking the SDK library into the packages directory. |  | 
| 39   Future<bool> install(PackageId id, String destPath) { |  | 
| 40     return defer(() { |  | 
| 41       var path = _getPackagePath(id); |  | 
| 42       if (path == null) return false; |  | 
| 43 |  | 
| 44       return createPackageSymlink(id.name, path, destPath).then((_) => true); |  | 
| 45     }); |  | 
| 46   } |  | 
| 47 |  | 
| 48   /// Gets the path in the SDK's "pkg" directory to the directory containing |  | 
| 49   /// package [id]. Returns `null` if the package could not be found. |  | 
| 50   String _getPackagePath(PackageId id) { |  | 
| 51     var pkgPath = path.join(sdk.rootDirectory, "pkg", id.description); |  | 
| 52     return dirExists(pkgPath) ? pkgPath : null; |  | 
| 53   } |  | 
| 54 } |  | 
| OLD | NEW | 
|---|