| 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 source_registry; | |
| 6 | |
| 7 import 'source.dart'; | |
| 8 | |
| 9 /// A class that keeps track of [Source]s used for installing packages. | |
| 10 class SourceRegistry { | |
| 11 final Map<String, Source> _map; | |
| 12 Source _default; | |
| 13 | |
| 14 /// Creates a new registry with no packages registered. | |
| 15 SourceRegistry() : _map = <String, Source>{}; | |
| 16 | |
| 17 /// Returns the default source, which is used when no source is specified. | |
| 18 Source get defaultSource => _default; | |
| 19 | |
| 20 /// Sets the default source. This takes a string, which must be the name of a | |
| 21 /// registered source. | |
| 22 void setDefault(String name) { | |
| 23 if (!_map.containsKey(name)) { | |
| 24 throw new StateError('Default source $name is not in the registry'); | |
| 25 } | |
| 26 | |
| 27 _default = _map[name]; | |
| 28 } | |
| 29 | |
| 30 /// Registers a new source. This source may not have the same name as a source | |
| 31 /// that's already been registered. | |
| 32 void register(Source source) { | |
| 33 if (_map.containsKey(source.name)) { | |
| 34 throw new StateError('Source registry already has a source named ' | |
| 35 '${source.name}'); | |
| 36 } | |
| 37 | |
| 38 _map[source.name] = source; | |
| 39 } | |
| 40 | |
| 41 /// Returns `true` if there is a source named [name]. | |
| 42 bool contains(String name) => _map.containsKey(name); | |
| 43 | |
| 44 /// Returns the source named [name]. Throws an error if no such source has | |
| 45 /// been registered. If [name] is null, returns the default source. | |
| 46 Source operator[](String name) { | |
| 47 if (name == null) { | |
| 48 if (defaultSource != null) return defaultSource; | |
| 49 throw new StateError('No default source has been registered'); | |
| 50 } | |
| 51 if (_map.containsKey(name)) return _map[name]; | |
| 52 throw new ArgumentError('No source named $name is registered'); | |
| 53 } | |
| 54 } | |
| OLD | NEW |