hask-replace is a command-line tool that simplifies the process of renaming
Haskell, Elm, and Idris modules. It can also be used to rename packages.
Here's an example of how you would use
cabal unpack dhall cd dhall-1.5.1/ hr module . "Dhall.Import" "Dhall.Dependencies" cabal new-build
As you can see, it's a lot less painful than whatever witchcraft you'd have to resort to to accomplish the same thing in bash. Not only that, it works for Idris and Elm too!
The easiest way to install for most users is probably via a shell script, viz.
curl -LSfs https://japaric.github.io/trust/install.sh | sh -s -- --git vmchale/hask-replace
If the script doesn't work, you can also download prebuilt binaries. You can find binaries for various platforms on the release page.
First, install cargo. Then:
$ cargo install hask-replace
You will need to use the nightly release for this to work; if in doubt run
rustup run nightly cargo install hask-replace
|dhall||Rename Module||7.41 ms|
|haskell-src-exts||Rename Module||30.29 ms|
hr can also be used on Idris.
git clone https://github.com/HuwCampbell/idris-lens.git cd idris-lens hr idris . Control.Lens.Maths Control.Lens.Math idris --build lens.ipkg
There is a vim plugin for hask-replace here. It supports copying and moving Haskell, Elm, and Idris modules.