Closed fuelen closed 3 years ago
The only way to know if a package is updatable is to do a full version resolution for every updatable version.
When you update a package other version constraints may be introduced or changed which causes the update to not be possible. In this cause ueberauth_microsoft >= 0.5.0
depends on oauth ~> 1.0
which is not compatible with the version requirement in your mix.exs
file.
Since it is not feasible for hex.outdated
to perform version resolution for a large set of different package versions it only checks if a package is updatable in the context of the set of version requirements in your current dependency tree. Because of this hex.outdated
may sometimes say that a dependency is updatable when it is not.
Okay, so that's an expected behaviour and I should just read Update possible
as Update is allowed by local mix.exs
.
Is it possible to perform full version resolution via additional flag and maybe write some info to an additional column? Does it make sense at all?
Okay, so that's an expected behaviour and I should just read Update possible as Update is allowed by local mix.exs.
Yes, or to be pedantic: allowed by mix.exs
and your current set of dependencies.
Is it possible to perform full version resolution via additional flag and maybe write some info to an additional column? Does it make sense at all?
Yes, that's mix deps.update
:). We don't show why we failed to select a given version because that would be very noisy in many cases and usually not useful to users. We have a debug mode that does display it: HEX_RESOLVE_VERBOSE=1 mix deps.update ueberauth_microsoft
. Which would print:
Failed to use "oauth2" (version 0.9.4) because
ueberauth_microsoft (versions 0.5.0 to 0.8.0) requires ~> 1.0 or ~> 2.0
mix.exs specifies ~> 0.9
Try the command locally, the colors in the shell really helps.
HEX_RESOLVE_VERBOSE=1
is really helpful! Thank you!
deps list
mix.lock
When I'm trying to update
ueberauth_microsoft
everything remains unchanged: