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 pub.entrypoint; | 5 library pub.entrypoint; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 | 8 |
9 import 'package:path/path.dart' as path; | 9 import 'package:path/path.dart' as path; |
10 import 'package:barback/barback.dart'; | 10 import 'package:barback/barback.dart'; |
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
418 return dirExists(dir) || fileExists(path.join(dir, "pubspec.yaml")); | 418 return dirExists(dir) || fileExists(path.join(dir, "pubspec.yaml")); |
419 }); | 419 }); |
420 })).then((results) { | 420 })).then((results) { |
421 // Make sure they are all true. | 421 // Make sure they are all true. |
422 return results.every((result) => result); | 422 return results.every((result) => result); |
423 }); | 423 }); |
424 } | 424 } |
425 | 425 |
426 /// Gets dependencies if the lockfile is out of date with respect to the | 426 /// Gets dependencies if the lockfile is out of date with respect to the |
427 /// pubspec. | 427 /// pubspec. |
428 Future ensureLockFileIsUpToDate() { | 428 Future ensureLockFileIsUpToDate() async { |
429 return new Future.sync(() { | 429 if (!lockFileExists) { |
| 430 log.message( |
| 431 "You don't have a lockfile, so we need to generate that:"); |
| 432 } else if (_isLockFileUpToDate(lockFile)) { |
| 433 // If we do have a lock file, we still need to make sure the packages are |
| 434 // actually installed. The user may have just gotten a package that |
| 435 // includes a lockfile. |
| 436 if (await _arePackagesAvailable(lockFile)) return; |
| 437 |
430 // If we don't have a current lock file, we definitely need to install. | 438 // If we don't have a current lock file, we definitely need to install. |
431 if (!_isLockFileUpToDate(lockFile)) { | 439 log.message( |
432 if (lockFileExists) { | 440 "You are missing some dependencies, so we need to install them " |
433 log.message( | 441 "first:"); |
434 "Your pubspec has changed, so we need to update your lockfile:"); | 442 } else { |
435 } else { | 443 log.message( |
436 log.message( | 444 "Your pubspec has changed, so we need to update your lockfile:"); |
437 "You don't have a lockfile, so we need to generate that:"); | 445 } |
438 } | |
439 | 446 |
440 return false; | 447 await acquireDependencies(SolveType.GET); |
441 } | |
442 | |
443 // If we do have a lock file, we still need to make sure the packages | |
444 // are actually installed. The user may have just gotten a package that | |
445 // includes a lockfile. | |
446 return _arePackagesAvailable(lockFile).then((available) { | |
447 if (!available) { | |
448 log.message( | |
449 "You are missing some dependencies, so we need to install them " | |
450 "first:"); | |
451 } | |
452 | |
453 return available; | |
454 }); | |
455 }).then((upToDate) { | |
456 if (upToDate) return null; | |
457 return acquireDependencies(SolveType.GET); | |
458 }); | |
459 } | 448 } |
460 | 449 |
461 /// Loads the package graph for the application and all of its transitive | 450 /// Loads the package graph for the application and all of its transitive |
462 /// dependencies. | 451 /// dependencies. |
463 /// | 452 /// |
464 /// If [result] is passed, this loads the graph from it without re-parsing the | 453 /// If [result] is passed, this loads the graph from it without re-parsing the |
465 /// lockfile or any pubspecs. Otherwise, before loading, this makes sure the | 454 /// lockfile or any pubspecs. Otherwise, before loading, this makes sure the |
466 /// lockfile and dependencies are installed and up to date. | 455 /// lockfile and dependencies are installed and up to date. |
467 Future<PackageGraph> loadPackageGraph([SolveResult result]) async { | 456 Future<PackageGraph> loadPackageGraph([SolveResult result]) async { |
468 if (_packageGraph != null) return _packageGraph; | 457 if (_packageGraph != null) return _packageGraph; |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
560 /// If [packageSymlinks] is true, creates a symlink to the "packages" | 549 /// If [packageSymlinks] is true, creates a symlink to the "packages" |
561 /// directory in [dir]. | 550 /// directory in [dir]. |
562 /// | 551 /// |
563 /// Otherwise, deletes a "packages" directories in [dir] if one exists. | 552 /// Otherwise, deletes a "packages" directories in [dir] if one exists. |
564 void _linkOrDeleteSecondaryPackageDir(String dir) { | 553 void _linkOrDeleteSecondaryPackageDir(String dir) { |
565 var symlink = path.join(dir, 'packages'); | 554 var symlink = path.join(dir, 'packages'); |
566 if (entryExists(symlink)) deleteEntry(symlink); | 555 if (entryExists(symlink)) deleteEntry(symlink); |
567 if (_packageSymlinks) createSymlink(packagesDir, symlink, relative: true); | 556 if (_packageSymlinks) createSymlink(packagesDir, symlink, relative: true); |
568 } | 557 } |
569 } | 558 } |
OLD | NEW |