Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(454)

Side by Side Diff: lib/src/command/deps.dart

Issue 2184303002: Make pub strong-mode clean. (Closed) Base URL: git@github.com:dart-lang/pub.git@master
Patch Set: Code review changes Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/src/command/cache_repair.dart ('k') | lib/src/command/global_activate.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 import 'dart:collection'; 5 import 'dart:collection';
6 6
7 import '../ascii_tree.dart' as tree; 7 import '../ascii_tree.dart' as tree;
8 import '../command.dart'; 8 import '../command.dart';
9 import '../log.dart' as log; 9 import '../log.dart' as log;
10 import '../package.dart'; 10 import '../package.dart';
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 /// Generates a dependency tree for the root package. 137 /// Generates a dependency tree for the root package.
138 /// 138 ///
139 /// If a package is encountered more than once (i.e. a shared or circular 139 /// If a package is encountered more than once (i.e. a shared or circular
140 /// dependency), later ones are not traversed. This is done in breadth-first 140 /// dependency), later ones are not traversed. This is done in breadth-first
141 /// fashion so that a package will always be expanded at the shallowest 141 /// fashion so that a package will always be expanded at the shallowest
142 /// depth that it appears at. 142 /// depth that it appears at.
143 void _outputTree() { 143 void _outputTree() {
144 // The work list for the breadth-first traversal. It contains the package 144 // The work list for the breadth-first traversal. It contains the package
145 // being added to the tree, and the parent map that will receive that 145 // being added to the tree, and the parent map that will receive that
146 // package. 146 // package.
147 var toWalk = new Queue<Pair<Package, Map>>(); 147 var toWalk = new Queue<Pair<Package, Map<String, Map>>>();
148 var visited = new Set<String>.from([entrypoint.root.name]); 148 var visited = new Set<String>.from([entrypoint.root.name]);
149 149
150 // Start with the root dependencies. 150 // Start with the root dependencies.
151 var packageTree = {}; 151 var packageTree = <String, Map>{};
152 var immediateDependencies = entrypoint.root.immediateDependencies.toSet(); 152 var immediateDependencies = entrypoint.root.immediateDependencies.toSet();
153 if (!_includeDev) { 153 if (!_includeDev) {
154 immediateDependencies.removeAll(entrypoint.root.devDependencies); 154 immediateDependencies.removeAll(entrypoint.root.devDependencies);
155 } 155 }
156 for (var dep in immediateDependencies) { 156 for (var dep in immediateDependencies) {
157 toWalk.add(new Pair(_getPackage(dep.name), packageTree)); 157 toWalk.add(new Pair(_getPackage(dep.name), packageTree));
158 } 158 }
159 159
160 // Do a breadth-first walk to the dependency graph. 160 // Do a breadth-first walk to the dependency graph.
161 while (toWalk.isNotEmpty) { 161 while (toWalk.isNotEmpty) {
162 var pair = toWalk.removeFirst(); 162 var pair = toWalk.removeFirst();
163 var package = pair.first; 163 var package = pair.first;
164 var map = pair.last; 164 var map = pair.last;
165 165
166 if (visited.contains(package.name)) { 166 if (visited.contains(package.name)) {
167 map[log.gray('${package.name}...')] = {}; 167 map[log.gray('${package.name}...')] = {};
168 continue; 168 continue;
169 } 169 }
170 170
171 visited.add(package.name); 171 visited.add(package.name);
172 172
173 // Populate the map with this package's dependencies. 173 // Populate the map with this package's dependencies.
174 var childMap = {}; 174 var childMap = <String, Map>{};
175 map[_labelPackage(package)] = childMap; 175 map[_labelPackage(package)] = childMap;
176 176
177 for (var dep in package.dependencies) { 177 for (var dep in package.dependencies) {
178 toWalk.add(new Pair(_getPackage(dep.name), childMap)); 178 toWalk.add(new Pair(_getPackage(dep.name), childMap));
179 } 179 }
180 } 180 }
181 181
182 _buffer.write(tree.fromMap(packageTree, showAllChildren: true)); 182 _buffer.write(tree.fromMap(packageTree, showAllChildren: true));
183 } 183 }
184 184
(...skipping 29 matching lines...) Expand all
214 /// available. 214 /// available.
215 /// 215 ///
216 /// It's very unlikely that the lockfile won't be up-to-date with the pubspec, 216 /// It's very unlikely that the lockfile won't be up-to-date with the pubspec,
217 /// but it's possible, since [Entrypoint.assertUpToDate]'s modification time 217 /// but it's possible, since [Entrypoint.assertUpToDate]'s modification time
218 /// check can return a false negative. This fails gracefully if that happens. 218 /// check can return a false negative. This fails gracefully if that happens.
219 Package _getPackage(String name) { 219 Package _getPackage(String name) {
220 var package = entrypoint.packageGraph.packages[name]; 220 var package = entrypoint.packageGraph.packages[name];
221 if (package != null) return package; 221 if (package != null) return package;
222 dataError('The pubspec.yaml file has changed since the pubspec.lock file ' 222 dataError('The pubspec.yaml file has changed since the pubspec.lock file '
223 'was generated, please run "pub get" again.'); 223 'was generated, please run "pub get" again.');
224 return null;
224 } 225 }
225 } 226 }
OLDNEW
« no previous file with comments | « lib/src/command/cache_repair.dart ('k') | lib/src/command/global_activate.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698