I would like my cabalised program to have a --version
switch.
I would like it to report the same version as is present in the .cabal file.
If I have to update the version number separately in my Haskell source code as well as in the .cabal file, I will eventually get them out of sync.
So, how can my program, while being compiled under cabal, get its version number from the .cabal file?
This is well supported with Cabal. As follows (from xmonad):
Import Paths_$myprogram
- a file Cabal creates with lots of metadata from the .cabal file, along with a the module for handling version numbers:
import Paths_xmonad (version)
import Data.Version (showVersion)
Add a print statement to print the 'version' field provided by Paths_$myprogram
:
case args of
["--version"] -> putStrLn ("xmonad " ++ showVersion version)
In general, Cabal's generated Paths file contains the following values, in dist/build/autogen/
version,
getBinDir, getLibDir, getDataDir, getLibexecDir,
getDataFileName
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With