diff --git a/source/dub/commandline.d b/source/dub/commandline.d index e1a385b..fb6186e 100644 --- a/source/dub/commandline.d +++ b/source/dub/commandline.d @@ -1116,8 +1116,8 @@ 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 c91e990..e430a46 100644 --- a/source/dub/dub.d +++ b/source/dub/dub.d @@ -660,7 +660,7 @@ 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 @@ 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 9c5067a..853e637 100644 --- a/source/dub/packagemanager.d +++ b/source/dub/packagemanager.d @@ -355,6 +355,18 @@ /** 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 28fcb3a..79da73a 100644 --- a/source/dub/project.d +++ b/source/dub/project.d @@ -521,7 +521,7 @@ 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)) {