| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 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 | 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 lock_file; | 5 library lock_file; |
| 6 | 6 |
| 7 import 'dart:json' as json; | |
| 8 import 'dart:collection'; | 7 import 'dart:collection'; |
| 9 | 8 |
| 10 import 'package:yaml/yaml.dart'; | 9 import 'package:yaml/yaml.dart'; |
| 11 | 10 |
| 12 import 'io.dart'; | 11 import 'io.dart'; |
| 12 import 'log.dart' as log; |
| 13 import 'package.dart'; | 13 import 'package.dart'; |
| 14 import 'source_registry.dart'; | 14 import 'source_registry.dart'; |
| 15 import 'utils.dart'; | 15 import 'utils.dart'; |
| 16 import 'version.dart'; | 16 import 'version.dart'; |
| 17 | 17 |
| 18 /// A parsed and validated `pubspec.lock` file. | 18 /// A parsed and validated `pubspec.lock` file. |
| 19 class LockFile { | 19 class LockFile { |
| 20 /// The packages this lockfile pins. | 20 /// The packages this lockfile pins. |
| 21 Map<String, PackageId> packages; | 21 Map<String, PackageId> packages; |
| 22 | 22 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 | 81 |
| 82 packages[name] = id; | 82 packages[name] = id; |
| 83 }); | 83 }); |
| 84 } | 84 } |
| 85 | 85 |
| 86 return new LockFile._(packages); | 86 return new LockFile._(packages); |
| 87 } | 87 } |
| 88 | 88 |
| 89 /// Returns the serialized YAML text of the lock file. | 89 /// Returns the serialized YAML text of the lock file. |
| 90 String serialize() { | 90 String serialize() { |
| 91 var packagesObj = new LinkedHashMap<String, Map>(); | 91 // Convert the dependencies to a simple object. |
| 92 | 92 var data = {}; |
| 93 // Sort the packages by name. | 93 packages.forEach((name, package) { |
| 94 var sortedKeys = packages.keys.toList(); | 94 data[name] = { |
| 95 sortedKeys.sort(); | |
| 96 sortedKeys.forEach((name) { | |
| 97 packagesObj[name] = { | |
| 98 'version': packages[name].version.toString(), | 95 'version': packages[name].version.toString(), |
| 99 'source': packages[name].source, | 96 'source': packages[name].source, |
| 100 'description': packages[name].description | 97 'description': packages[name].description |
| 101 }; | 98 }; |
| 102 }); | 99 }); |
| 103 | 100 |
| 104 // TODO(nweiz): Serialize using the YAML library once it supports | 101 return """ |
| 105 // serialization. For now, we use JSON, since it's a subset of YAML anyway. | 102 # Generated by pub |
| 106 return | 103 # See http://pub.dartlang.org/doc/glossary.html#lockfile |
| 107 '# Generated by pub\n' | 104 ${yamlToString({'packages': data})} |
| 108 '# See http://pub.dartlang.org/doc/glossary.html#lockfile\n' | 105 """; |
| 109 '\n' | |
| 110 '${json.stringify({'packages': packagesObj})}\n'; | |
| 111 } | 106 } |
| 112 } | 107 } |
| OLD | NEW |