| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library serve_packages; | 5 library serve_packages; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:convert'; | 8 import 'dart:convert'; |
| 9 | 9 |
| 10 import 'package:path/path.dart' as p; | 10 import 'package:path/path.dart' as p; |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 })); | 141 })); |
| 142 } | 142 } |
| 143 | 143 |
| 144 /// Serves the versions of [package] and all its dependencies that are | 144 /// Serves the versions of [package] and all its dependencies that are |
| 145 /// currently checked into the Dart repository. | 145 /// currently checked into the Dart repository. |
| 146 void serveRepoPackage(String package) { | 146 void serveRepoPackage(String package) { |
| 147 _addPackage(name) { | 147 _addPackage(name) { |
| 148 if (_packages.containsKey(name)) return; | 148 if (_packages.containsKey(name)) return; |
| 149 _packages[name] = []; | 149 _packages[name] = []; |
| 150 | 150 |
| 151 var pubspec = new Map.from( | 151 var root = packagePath(name); |
| 152 loadYaml(readTextFile(p.join(repoRoot, 'pkg', name, 'pubspec.yaml'))))
; | 152 var pubspec = |
| 153 new Map.from(loadYaml(readTextFile(p.join(root, 'pubspec.yaml')))); |
| 153 | 154 |
| 154 // Remove any SDK constraints since we don't have a valid SDK version | 155 // Remove any SDK constraints since we don't have a valid SDK version |
| 155 // while testing. | 156 // while testing. |
| 156 pubspec.remove('environment'); | 157 pubspec.remove('environment'); |
| 157 | 158 |
| 158 _packages[name].add( | 159 _packages[name].add( |
| 159 new _ServedPackage( | 160 new _ServedPackage( |
| 160 pubspec, | 161 pubspec, |
| 161 [ | 162 [ |
| 162 d.file('pubspec.yaml', yaml(pubspec)), | 163 d.file('pubspec.yaml', yaml(pubspec)), |
| 163 new d.DirectoryDescriptor.fromFilesystem( | 164 new d.DirectoryDescriptor.fromFilesystem('lib', p.join(root, '
lib'))])); |
| 164 'lib', | |
| 165 p.join(repoRoot, 'pkg', name, 'lib'))])); | |
| 166 | 165 |
| 167 if (pubspec.containsKey('dependencies')) { | 166 if (pubspec.containsKey('dependencies')) { |
| 168 pubspec['dependencies'].keys.forEach(_addPackage); | 167 pubspec['dependencies'].keys.forEach(_addPackage); |
| 169 } | 168 } |
| 170 } | 169 } |
| 171 | 170 |
| 172 _addPackage(package); | 171 _addPackage(package); |
| 173 } | 172 } |
| 174 | 173 |
| 175 /// Returns a Future that completes once all the [serve] calls have been fully | 174 /// Returns a Future that completes once all the [serve] calls have been fully |
| 176 /// processed. | 175 /// processed. |
| 177 Future _await() { | 176 Future _await() { |
| 178 if (_futures.futures.isEmpty) return new Future.value(); | 177 if (_futures.futures.isEmpty) return new Future.value(); |
| 179 return _futures.future.then((_) { | 178 return _futures.future.then((_) { |
| 180 _futures = new FutureGroup(); | 179 _futures = new FutureGroup(); |
| 181 }); | 180 }); |
| 182 } | 181 } |
| 183 } | 182 } |
| 184 | 183 |
| 185 /// A package that's intended to be served. | 184 /// A package that's intended to be served. |
| 186 class _ServedPackage { | 185 class _ServedPackage { |
| 187 final Map pubspec; | 186 final Map pubspec; |
| 188 final List<d.Descriptor> contents; | 187 final List<d.Descriptor> contents; |
| 189 | 188 |
| 190 Version get version => new Version.parse(pubspec['version']); | 189 Version get version => new Version.parse(pubspec['version']); |
| 191 | 190 |
| 192 _ServedPackage(this.pubspec, this.contents); | 191 _ServedPackage(this.pubspec, this.contents); |
| 193 } | 192 } |
| OLD | NEW |