Я хотел бы, чтобы моя cabalised программа имела a --version
переключатель.
Я хотел бы, чтобы это сообщило о той же версии, как присутствует в .cabal файле.
Если я должен обновить номер версии отдельно в моем исходном коде Haskell, а также в .cabal файле, я в конечном счете вытащу их из синхронизации.
Так, как может моя программа, будучи скомпилированным под интригой, получить ее номер версии из .cabal файла?
Это хорошо поддерживается Кабалом. Следующее (из xmonad):
Импорт Paths_ $ myprogram
- файл, который Cabal создает с большим количеством метаданных из файла .cabal вместе с модулем для обработки номеров версий:
import Paths_xmonad (version)
import Data.Version (showVersion)
Добавить print для печати поля 'версия', предоставленного Paths_ $ myprogram
:
case args of
["--version"] -> putStrLn ("xmonad " ++ showVersion version)
В общем, созданный Кабалом файл Paths содержит следующие значения в dist / build / autogen /
version,
getBinDir, getLibDir, getDataDir, getLibexecDir,
getDataFileName