Скажем, у меня есть консольная программа, которая имеет возможность отображать ее версию . В настоящее время всякий раз, когда я обновляю версию в файле .cabal
, мне нужно пойти в исходный код и обновить константу - строковое представление текущего номера версии . Это связано с принципом DRY, и теперь я чувствую, что можно получить версию моего проекта, как определено в .cabal
файл из исходного кода? Может быть, Cabal определяет какой-то макрос CPP или что-то еще?Есть ли способ получить версию пакета Cabal в исходном коде пакета?
8
A
ответ
5
Действительно, Cabal позволяет получить доступ к информации от .cabal
файла в вашей программе . According to Cabal documentation, вы можете импортировать специальный модуль, который существует при строительстве вашего пакета, как это:
import Paths_packagename (version)
import Data.Version (showVersion)
myVersion :: String
myVersion = showVersion version
Модуль Paths_packagename
обеспечивает version
типа Version.