From 346a2d3b22baab3422c96622f2c34dcb735a4ee7 Mon Sep 17 00:00:00 2001 From: Geod24 Date: Thu, 11 Aug 2022 00:26:50 +0200 Subject: [PATCH] PackageManager.getBestPackage: Introduce Version[Range] overloads --- source/dub/commandline.d | 4 ++-- source/dub/dub.d | 4 ++-- source/dub/packagemanager.d | 12 ++++++++++++ source/dub/project.d | 2 +- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/source/dub/commandline.d b/source/dub/commandline.d index e1a385b4c..fb6186ea6 100644 --- a/source/dub/commandline.d +++ b/source/dub/commandline.d @@ -1116,8 +1116,8 @@ abstract class PackageBuildCommand : Command { enforce(package_name.length, "No valid root package found - aborting."); - auto pack = dub.packageManager.getBestPackage( - package_name, ver.length ? Dependency(ver) : Dependency.any); + const vers = ver.length ? VersionRange.fromString(ver) : VersionRange.Any; + auto pack = dub.packageManager.getBestPackage(package_name, vers); enforce(pack, format!"Failed to find a package named '%s%s' locally."(package_name, ver == "" ? "" : ("@" ~ ver) diff --git a/source/dub/dub.d b/source/dub/dub.d index c91e99020..e430a4641 100644 --- a/source/dub/dub.d +++ b/source/dub/dub.d @@ -660,7 +660,7 @@ class Dub { auto tool = "dscanner"; - auto tool_pack = m_packageManager.getBestPackage(tool, ">=0.0.0"); + auto tool_pack = m_packageManager.getBestPackage(tool); if (!tool_pack) tool_pack = m_packageManager.getBestPackage(tool, "~master"); if (!tool_pack) { logInfo("Hint", Color.light_blue, "%s is not present, getting and storing it user wide", tool); @@ -1155,7 +1155,7 @@ class Dub { private void runCustomInitialization(NativePath path, string type, string[] runArgs) { string packageName = type; - auto template_pack = m_packageManager.getBestPackage(packageName, ">=0.0.0"); + auto template_pack = m_packageManager.getBestPackage(packageName); if (!template_pack) template_pack = m_packageManager.getBestPackage(packageName, "~master"); if (!template_pack) { logInfo("%s is not present, getting and storing it user wide", packageName); diff --git a/source/dub/packagemanager.d b/source/dub/packagemanager.d index 9c5067adf..853e6377b 100644 --- a/source/dub/packagemanager.d +++ b/source/dub/packagemanager.d @@ -355,6 +355,18 @@ class PackageManager { /** Searches for the latest version of a package matching the given dependency. */ + Package getBestPackage(string name, VersionRange range = VersionRange.Any) + { + return this.getBestPackage(name, Dependency(range)); + } + + /// Ditto + Package getBestPackage(string name, Version vers) + { + return this.getBestPackage(name, VersionRange(vers, vers)); + } + + /// Ditto Package getBestPackage(string name, Dependency version_spec, bool enable_overrides = true) { Package ret; diff --git a/source/dub/project.d b/source/dub/project.d index 28fcb3a9d..79da73ad8 100644 --- a/source/dub/project.d +++ b/source/dub/project.d @@ -521,7 +521,7 @@ shared static this() { return resolveSubPackage(tmp, subname, true); }, (VersionRange range) { - return m_packageManager.getBestPackage(dep.name, vspec); + return m_packageManager.getBestPackage(dep.name, range); }, ); } else if (m_dependencies.canFind!(d => getBasePackageName(d.name) == basename)) {