blob: a4f7771400c3ce47873b899534d884fd95ac47ff [file] [log] [blame]
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:async';
import 'lock_file.dart';
import 'log.dart' as log;
import 'package.dart';
import 'system_cache.dart';
import 'solver/result.dart';
import 'solver/type.dart';
import 'solver/version_solver.dart';
export 'solver/failure.dart';
export 'solver/result.dart';
export 'solver/type.dart';
/// Attempts to select the best concrete versions for all of the transitive
/// dependencies of [root] taking into account all of the [VersionConstraint]s
/// that those dependencies place on each other and the requirements imposed by
/// [lockFile].
///
/// If [useLatest] is given, then only the latest versions of the referenced
/// packages will be used. This is for forcing an upgrade to one or more
/// packages.
///
/// If [upgradeAll] is true, the contents of [lockFile] are ignored.
Future<SolveResult> resolveVersions(
SolveType type, SystemCache cache, Package root,
{LockFile lockFile, Iterable<String> useLatest}) {
return log.progress('Resolving dependencies', () {
return new VersionSolver(type, cache, root,
lockFile ?? new LockFile.empty(), useLatest ?? const [])
.solve();
});
}