diff --git a/changelog/enforce_proper_package_loading.dd b/changelog/enforce_proper_package_loading.dd new file mode 100644 index 0000000..2629a80 --- /dev/null +++ b/changelog/enforce_proper_package_loading.dd @@ -0,0 +1,5 @@ +Enforce proper package loading on 'dub update' + +Rather than doing `dub.loadPackage`, `enforce(loadCwdPackage...)` ensures that the package exists. +This prevents `update` code from force-creating `dub.selections.json`, and generates a proper error message. +That message is similar to one you get running `dub build` or `dub test` etc. diff --git a/source/dub/commandline.d b/source/dub/commandline.d index 3648544..898d6e9 100644 --- a/source/dub/commandline.d +++ b/source/dub/commandline.d @@ -1747,7 +1747,7 @@ enforceUsage(free_args.length <= 1, "Unexpected arguments."); enforceUsage(app_args.length == 0, "Unexpected application arguments."); enforceUsage(!m_verify, "--verify is not yet implemented."); - dub.loadPackage(); + enforce(loadCwdPackage(dub, true), "Failed to load package."); logInfo("Upgrading project in %s", dub.projectPath.toNativeString()); auto options = UpgradeOptions.upgrade|UpgradeOptions.select; if (m_missingOnly) options &= ~UpgradeOptions.upgrade;