| Index: utils/pub/root_source.dart | 
| diff --git a/utils/pub/root_source.dart b/utils/pub/root_source.dart | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..1e8d4f400bf1225da1f9057afbfc968f63f82a24 | 
| --- /dev/null | 
| +++ b/utils/pub/root_source.dart | 
| @@ -0,0 +1,35 @@ | 
| +// Copyright (c) 2012, 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. | 
| + | 
| +#library('root_source'); | 
| + | 
| +#import('package.dart'); | 
| +#import('source.dart'); | 
| + | 
| +/** | 
| + * A source used only for the root package when doing version resolution. It | 
| + * contains only the root package and is unable to install packages. | 
| + * | 
| + * This source cannot be referenced from a pubspec. | 
| + */ | 
| +class RootSource extends Source { | 
| +  final String name = "root"; | 
| +  final bool shouldCache = false; | 
| +  final Package package; | 
| + | 
| +  RootSource(this.package); | 
| + | 
| +  Future<List<Version>> getVersions(description) { | 
| +    return Future<List<Version>>.immediate([package.version]); | 
| +  } | 
| + | 
| +  Future<Pubspec> describe(PackageId id) { | 
| +    return Future<Pubspec>.immediate(package.pubspec); | 
| +  } | 
| + | 
| +  Future<bool> install(PackageId id, String destPath) { | 
| +    throw new UnsupportedOperationException( | 
| +        "Can't install from a root source."); | 
| +  } | 
| +} | 
|  |