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

Side by Side Diff: lib/src/global_packages.dart

Issue 1427523005: "pub global run" errors out for a mismatched SDK. (Closed) Base URL: git@github.com:dart-lang/pub.git@master
Patch Set: Created 5 years, 1 month 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 | « no previous file | test/global/run/fails_if_sdk_constraint_is_unmet_test.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 library pub.global_packages; 5 library pub.global_packages;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 9
10 import 'package:path/path.dart' as p; 10 import 'package:path/path.dart' as p;
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 new File(oldLockFilePath).renameSync(lockFilePath); 301 new File(oldLockFilePath).renameSync(lockFilePath);
302 } 302 }
303 303
304 // Remove the package itself from the lockfile. We put it in there so we 304 // Remove the package itself from the lockfile. We put it in there so we
305 // could find and load the [Package] object, but normally an entrypoint 305 // could find and load the [Package] object, but normally an entrypoint
306 // doesn't expect to be in its own lockfile. 306 // doesn't expect to be in its own lockfile.
307 var id = lockFile.packages[name]; 307 var id = lockFile.packages[name];
308 lockFile = lockFile.removePackage(name); 308 lockFile = lockFile.removePackage(name);
309 309
310 var source = cache.sources[id.source]; 310 var source = cache.sources[id.source];
311 var entrypoint;
311 if (source is CachedSource) { 312 if (source is CachedSource) {
312 // For cached sources, the package itself is in the cache and the 313 // For cached sources, the package itself is in the cache and the
313 // lockfile is the one we just loaded. 314 // lockfile is the one we just loaded.
314 var dir = cache.sources[id.source].getDirectory(id); 315 var dir = cache.sources[id.source].getDirectory(id);
315 var package = new Package.load(name, dir, cache.sources); 316 var package = new Package.load(name, dir, cache.sources);
316 return new Entrypoint.inMemory(package, lockFile, cache, isGlobal: true); 317 entrypoint = new Entrypoint.inMemory(
318 package, lockFile, cache, isGlobal: true);
319 } else {
320 // For uncached sources (i.e. path), the ID just points to the real
321 // directory for the package.
322 assert(id.source == "path");
323 entrypoint = new Entrypoint(
324 PathSource.pathFromDescription(id.description), cache,
325 isGlobal: true);
317 } 326 }
318 327
319 // For uncached sources (i.e. path), the ID just points to the real 328 if (entrypoint.root.pubspec.environment.sdkVersion.allows(sdk.version)) {
320 // directory for the package. 329 return entrypoint;
321 assert(id.source == "path"); 330 }
322 return new Entrypoint( 331
323 PathSource.pathFromDescription(id.description), cache, isGlobal: true); 332 dataError("${log.bold(name)} ${entrypoint.root.version} doesn't support "
333 "Dart ${sdk.version}.");
324 } 334 }
325 335
326 /// Runs [package]'s [executable] with [args]. 336 /// Runs [package]'s [executable] with [args].
327 /// 337 ///
328 /// If [executable] is available in its precompiled form, that will be 338 /// If [executable] is available in its precompiled form, that will be
329 /// recompiled if the SDK has been upgraded since it was first compiled and 339 /// recompiled if the SDK has been upgraded since it was first compiled and
330 /// then run. Otherwise, it will be run from source. 340 /// then run. Otherwise, it will be run from source.
331 /// 341 ///
332 /// If [checked] is true, the program is run in checked mode. If [mode] is 342 /// If [checked] is true, the program is run in checked mode. If [mode] is
333 /// passed, it's used as the barback mode; it defaults to 343 /// passed, it's used as the barback mode; it defaults to
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
784 } 794 }
785 795
786 /// Returns the value of the property named [name] in the bin stub script 796 /// Returns the value of the property named [name] in the bin stub script
787 /// [source]. 797 /// [source].
788 String _binStubProperty(String source, String name) { 798 String _binStubProperty(String source, String name) {
789 var pattern = new RegExp(quoteRegExp(name) + r": ([a-zA-Z0-9_-]+)"); 799 var pattern = new RegExp(quoteRegExp(name) + r": ([a-zA-Z0-9_-]+)");
790 var match = pattern.firstMatch(source); 800 var match = pattern.firstMatch(source);
791 return match == null ? null : match[1]; 801 return match == null ? null : match[1];
792 } 802 }
793 } 803 }
OLDNEW
« no previous file with comments | « no previous file | test/global/run/fails_if_sdk_constraint_is_unmet_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698