Update binaries built by Cabal (Haskell)
I want to suggest a new step
Check executables/packages installed in ~/.cabal/bin/ against their versions on https://hackage.org, and update if newer versions were posted there.
This is similar to how topgrade checks the versions of executables installed in $HOME/.cargo/bin and updates those that have newer versions on https://crates.io.
It would be nice if similar functionality is added to Cabal-built Haskell stuff that lives in $HOME/.cabal/bin.
Which tool is this about? Where is its repository?
It is about Haskell ecosystem, tool is cabal, which should be installed in ~/.ghcup/bin/.
Which operating systems are supported by this tool?
Pretty much all of those supported by topgrade.
What should Topgrade do to figure out if the tool needs to be invoked?
Roughly, for each binary in ~/.cabal/bin figure whether it belongs to a package that's on https://hackage.org, retrieve package info and version, check the version of the installed binary, perform update if online version is newer than local.
Haskell ecosystem is much more fragile than that of Rust, so the current default GHC compiler may be unable to compile the package - in which case topgrade would want to try with an older GHC.
Which exact commands should Topgrade run?
After determining that an update is required for a package foo:
$ cabal install foo --overwrite-policy=always
I want to suggest some general feature
topgrade should update Cabal-built Haskell stuff that lives in $HOME/.cabal/bin.
More information
The problem with GHC seems pretty difficult to solve without a lot of work, which would be a reason for me to not work on that. But if anyone else wants to implement it feel free to do it.
I understand. Your concern is both appreciated and well-found.