61 votes

Comment mon programme ou ma bibliothèque Haskell peut-il trouver son numéro de version?

Je voudrais que mon programme cabalisé ait une commutation --version .

Je voudrais qu'il rapporte la même version que celle présente dans le fichier .cabal.

Si je dois mettre à jour le numéro de version séparément dans mon code source Haskell ainsi que dans le fichier .cabal, je finirai par les désynchroniser.

Alors, comment mon programme, tout en étant compilé avec cabal, peut-il obtenir son numéro de version à partir du fichier .cabal?

85voto

Don Stewart Points 94361

Ceci est bien pris en charge avec Cabal. Comme suit (de xmonad):

Import Paths_ $ myprogram - un fichier créé par Cabal avec de nombreuses métadonnées à partir du fichier .cabal, ainsi qu'un module permettant de gérer les numéros de version:

 import Paths_xmonad (version)
import Data.Version (showVersion)
 

Ajoutez une instruction print pour imprimer le champ 'version' fourni par Paths_ $ myprogram:

 case args of
     ["--version"] -> putStrLn ("xmonad " ++ showVersion version)
 

En général, le fichier de chemins généré par Cabal contient les valeurs suivantes, dans dist / build / autogen /

 version,
getBinDir, getLibDir, getDataDir, getLibexecDir,
getDataFileName
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X