Ik zou graag willen dat mijn gecabaliseerde programma een --version
switch heeft.
Ik wil graag dat het dezelfde versie rapporteert als aanwezig is in het .cabal-bestand.
Als ik het versienummer afzonderlijk moet bijwerken in mijn Haskell-broncode en in het .cabal-bestand, zal ik ze uiteindelijk niet meer synchroon laten lopen.
Dus, hoe kan mijn programma, terwijl het onder cabal is gecompileerd, zijn versienummer uit het .cabal-bestand halen?
Antwoord 1, autoriteit 100%
Dit wordt goed ondersteund door Cabal. Als volgt (van xmonad):
Importeer Paths_$myprogram
– een bestand dat Cabal maakt met veel metadata uit het .cabal-bestand, samen met een module voor het verwerken van versienummers:
import Paths_xmonad (version)
import Data.Version (showVersion)
Voeg een printopdracht toe om het ‘versie’-veld van Paths_$myprogram
af te drukken:
case args of
["--version"] -> putStrLn ("xmonad " ++ showVersion version)
Over het algemeen bevat het gegenereerde Paths-bestand van Cabal de volgende waarden, in dist/build/autogen/
version,
getBinDir, getLibDir, getDataDir, getLibexecDir,
getDataFileName