Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2015, 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 /// Keeps track of used package locations, and can create a package dictionary. | |
|
nweiz
2015/06/10 22:33:59
"used package locations" -> "the locations of pack
Lasse Reichstein Nielsen
2015/06/11 11:21:02
Reworded.
| |
| 6 /// | |
| 7 /// A package dictionary is currently a `.packages` file. | |
|
nweiz
2015/06/10 22:33:58
What do you mean by "currently"?
Lasse Reichstein Nielsen
2015/06/11 11:21:01
Too specualtive, yes. Removed.
| |
| 8 library pub.package_locations; | |
| 9 // TODO(lrn): Also move packages/ directory management to this library. | |
|
nweiz
2015/06/10 22:33:58
Nit: Move this above the library tag.
Lasse Reichstein Nielsen
2015/06/11 11:21:02
Done.
| |
| 10 | |
| 11 import 'package:package_config/packages_file.dart' as pkgfile; | |
|
nweiz
2015/06/10 22:33:58
We tend to use full words for identifiers except i
Lasse Reichstein Nielsen
2015/06/11 11:21:02
Done.
| |
| 12 | |
| 13 import 'package_graph.dart'; | |
| 14 import 'io.dart'; | |
| 15 import 'log.dart' as log; | |
| 16 import 'utils.dart' show ordered; | |
| 17 | |
| 18 /// Creates a `.packages` file with the location of the packges in `graph`. | |
|
nweiz
2015/06/10 22:33:58
"location" -> "locations", "packges" -> "packages"
Lasse Reichstein Nielsen
2015/06/11 11:21:01
Done.
| |
| 19 /// | |
| 20 /// The file is written next to the entry-point of [graph], | |
|
nweiz
2015/06/10 22:33:58
"next to" -> "in the root directory of", "entry-po
Lasse Reichstein Nielsen
2015/06/11 11:21:02
Done.
| |
| 21 /// unless [file] is provided, in which case that file is written to instead. | |
| 22 /// | |
| 23 /// If the file already exists, it is deleted before the new content is written. | |
| 24 void writePackagesMap(PackageGraph graph, {String file}) { | |
|
nweiz
2015/06/10 22:33:58
[file] isn't used in this patch and I don't see an
Lasse Reichstein Nielsen
2015/06/11 11:21:01
Done.
| |
| 25 if (file == null) file = graph.entrypoint.root.path(".packages"); | |
| 26 print("WRITE!: $file"); | |
|
nweiz
2015/06/10 22:33:58
Remove this as well as debugging prints below.
Lasse Reichstein Nielsen
2015/06/11 11:21:02
Done.
| |
| 27 deleteEntry(file); | |
| 28 var content = _createPackagesMap(graph, file); | |
| 29 try { | |
| 30 print("WRITE FILE"); | |
| 31 writeTextFile(file, content); | |
| 32 print("WROTE FILE"); | |
| 33 } catch (error, stackTrace) { | |
|
nweiz
2015/06/10 22:33:58
This should be a fatal error.
Lasse Reichstein Nielsen
2015/06/11 11:21:02
How do you make it fatal? Not catching it?
nweiz
2015/06/12 23:48:08
Yeah, that's all that I mean.
Lasse Reichstein Nielsen
2015/06/23 14:54:33
Done.
Lasse Reichstein Nielsen
2015/06/23 14:54:33
Done.
| |
| 34 print("DNWRITE: $error"); | |
| 35 log.error(error, stackTrace); | |
| 36 } | |
| 37 } | |
| 38 | |
| 39 /// Template for header text put into `.packages` file. | |
| 40 /// | |
| 41 /// Contains the literal string `$now` which should be replaced by a timestamp. | |
| 42 const _headerText = r""" | |
| 43 Generate by pub on $now. | |
| 44 This file contains a map from Dart package names to Dart package locations. | |
| 45 Dart tools, including Dart VM and Dart analyzer, rely on the content. | |
|
nweiz
2015/06/10 22:33:58
"Dart VM" -> "the Dart VM".
Lasse Reichstein Nielsen
2015/06/11 11:21:01
Done.
| |
| 46 AUTO GENERATED - DO NOT EDIT | |
| 47 """; | |
| 48 | |
| 49 /// Creates `.packages` file content from the packages in a package graph. | |
|
nweiz
2015/06/10 22:33:58
"Creates" -> "Returns the contents of the"
Lasse Reichstein Nielsen
2015/06/11 11:21:02
Done.
| |
| 50 String _createPackagesMap(PackageGraph packageGraph, File packagesFile) { | |
|
nweiz
2015/06/10 22:33:58
"packagesFile" is a string.
Lasse Reichstein Nielsen
2015/06/11 11:21:01
Acknowledged.
| |
| 51 var header = _headerText.replaceFirst(r"$now", new DateTime.now().toString()); | |
| 52 | |
| 53 Uri fileUri = new Uri.file(packagesFile); | |
|
nweiz
2015/06/10 22:33:58
Nit: don't type-annotate local variables, and move
Lasse Reichstein Nielsen
2015/06/11 11:21:01
Done.
| |
| 54 | |
| 55 var packages = packageGraph.packages; | |
| 56 var uriMap = {}; | |
| 57 for (var packageName in ordered(packages.keys)) { | |
| 58 var location = packages[packageName].path("lib/"); | |
|
nweiz
2015/06/10 22:33:59
Don't include a trailing "/" here.
Lasse Reichstein Nielsen
2015/06/11 11:21:02
Done. The result will have the trailing / anyway,
| |
| 59 uriMap[packageName] = new Uri.directory(location); | |
|
nweiz
2015/06/10 22:33:59
I don't think [Uri.directory] exists. Regardless,
Lasse Reichstein Nielsen
2015/06/11 11:21:02
It exists/will exist in v1.11, but using path.toUr
| |
| 60 } | |
| 61 | |
| 62 var text = new StringBuffer(); | |
| 63 pkgfile.write(text, uriMap, baseUri: fileUri, comment: header); | |
|
nweiz
2015/06/10 22:33:58
We shouldn't pass [baseUri] here. Most types of de
Lasse Reichstein Nielsen
2015/06/11 11:21:02
Sounds fair. Omitting baseUri should avoid any rel
| |
| 64 return text.toString(); | |
| 65 } | |
| OLD | NEW |