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

Side by Side Diff: lib/src/entrypoint.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/dart.dart ('k') | lib/src/error_group.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) 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 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:io'; 6 import 'dart:io';
7 7
8 import 'package:barback/barback.dart'; 8 import 'package:barback/barback.dart';
9 import 'package:package_config/packages_file.dart' as packages_file; 9 import 'package:package_config/packages_file.dart' as packages_file;
10 import 'package:path/path.dart' as p; 10 import 'package:path/path.dart' as p;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 100
101 /// The package graph for the application and all of its transitive 101 /// The package graph for the application and all of its transitive
102 /// dependencies. 102 /// dependencies.
103 /// 103 ///
104 /// Throws a [DataError] if the `.packages` file isn't up-to-date relative to 104 /// Throws a [DataError] if the `.packages` file isn't up-to-date relative to
105 /// the pubspec and the lockfile. 105 /// the pubspec and the lockfile.
106 PackageGraph get packageGraph { 106 PackageGraph get packageGraph {
107 if (_packageGraph != null) return _packageGraph; 107 if (_packageGraph != null) return _packageGraph;
108 108
109 assertUpToDate(); 109 assertUpToDate();
110 var packages = new Map.fromIterable(lockFile.packages.values, 110 var packages = new Map<String, Package>.fromIterable(
111 lockFile.packages.values,
111 key: (id) => id.name, 112 key: (id) => id.name,
112 value: (id) => cache.load(id)); 113 value: (id) => cache.load(id));
113 packages[root.name] = root; 114 packages[root.name] = root;
114 115
115 _packageGraph = new PackageGraph(this, lockFile, packages); 116 _packageGraph = new PackageGraph(this, lockFile, packages);
116 return _packageGraph; 117 return _packageGraph;
117 } 118 }
118 PackageGraph _packageGraph; 119 PackageGraph _packageGraph;
119 120
120 /// The path to the entrypoint's "packages" directory. 121 /// The path to the entrypoint's "packages" directory.
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 deleteEntry(p.join(_precompiledDepsPath, package)); 288 deleteEntry(p.join(_precompiledDepsPath, package));
288 } 289 }
289 rethrow; 290 rethrow;
290 } 291 }
291 } 292 }
292 293
293 /// Returns the set of dependencies that need to be precompiled. 294 /// Returns the set of dependencies that need to be precompiled.
294 /// 295 ///
295 /// If [changed] is passed, only dependencies whose contents might be changed 296 /// If [changed] is passed, only dependencies whose contents might be changed
296 /// if one of the given packages changes will be returned. 297 /// if one of the given packages changes will be returned.
297 Set<String> _dependenciesToPrecompile({Iterable<String> changed}) { 298 Set<String> _dependenciesToPrecompile({Set<String> changed}) {
298 return packageGraph.packages.values.where((package) { 299 return packageGraph.packages.values.where((package) {
299 if (package.pubspec.transformers.isEmpty) return false; 300 if (package.pubspec.transformers.isEmpty) return false;
300 if (packageGraph.isPackageMutable(package.name)) return false; 301 if (packageGraph.isPackageMutable(package.name)) return false;
301 if (!dirExists(p.join(_precompiledDepsPath, package.name))) return true; 302 if (!dirExists(p.join(_precompiledDepsPath, package.name))) return true;
302 if (changed == null) return true; 303 if (changed == null) return true;
303 304
304 /// Only recompile [package] if any of its transitive dependencies have 305 /// Only recompile [package] if any of its transitive dependencies have
305 /// changed. We check all transitive dependencies because it's possible 306 /// changed. We check all transitive dependencies because it's possible
306 /// that a transformer makes decisions based on their contents. 307 /// that a transformer makes decisions based on their contents.
307 return overlaps( 308 return overlaps(
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 _linkOrDeleteSecondaryPackageDir(dir); 689 _linkOrDeleteSecondaryPackageDir(dir);
689 _listDirWithoutPackages(dir) 690 _listDirWithoutPackages(dir)
690 .where(dirExists) 691 .where(dirExists)
691 .forEach(_linkOrDeleteSecondaryPackageDir); 692 .forEach(_linkOrDeleteSecondaryPackageDir);
692 } 693 }
693 694
694 // TODO(nweiz): roll this into [listDir] in io.dart once issue 4775 is fixed. 695 // TODO(nweiz): roll this into [listDir] in io.dart once issue 4775 is fixed.
695 /// Recursively lists the contents of [dir], excluding hidden `.DS_Store` 696 /// Recursively lists the contents of [dir], excluding hidden `.DS_Store`
696 /// files and `package` files. 697 /// files and `package` files.
697 List<String> _listDirWithoutPackages(dir) { 698 List<String> _listDirWithoutPackages(dir) {
698 return flatten(listDir(dir).map((file) { 699 return listDir(dir).expand/*<String>*/((file) {
699 if (p.basename(file) == 'packages') return []; 700 if (p.basename(file) == 'packages') return [];
700 if (!dirExists(file)) return []; 701 if (!dirExists(file)) return [];
701 var fileAndSubfiles = [file]; 702 var fileAndSubfiles = [file];
702 fileAndSubfiles.addAll(_listDirWithoutPackages(file)); 703 fileAndSubfiles.addAll(_listDirWithoutPackages(file));
703 return fileAndSubfiles; 704 return fileAndSubfiles;
704 })); 705 });
705 } 706 }
706 707
707 /// If [packageSymlinks] is true, creates a symlink to the "packages" 708 /// If [packageSymlinks] is true, creates a symlink to the "packages"
708 /// directory in [dir]. 709 /// directory in [dir].
709 /// 710 ///
710 /// Otherwise, deletes a "packages" directories in [dir] if one exists. 711 /// Otherwise, deletes a "packages" directories in [dir] if one exists.
711 void _linkOrDeleteSecondaryPackageDir(String dir) { 712 void _linkOrDeleteSecondaryPackageDir(String dir) {
712 var symlink = p.join(dir, 'packages'); 713 var symlink = p.join(dir, 'packages');
713 if (entryExists(symlink)) deleteEntry(symlink); 714 if (entryExists(symlink)) deleteEntry(symlink);
714 if (_packageSymlinks) createSymlink(packagesDir, symlink, relative: true); 715 if (_packageSymlinks) createSymlink(packagesDir, symlink, relative: true);
715 } 716 }
716 } 717 }
OLDNEW
« no previous file with comments | « lib/src/dart.dart ('k') | lib/src/error_group.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698