2015-10-16 3 views
8

Скажем, у меня есть консольная программа, которая имеет возможность отображать ее версию . В настоящее время всякий раз, когда я обновляю версию в файле .cabal, мне нужно пойти в исходный код и обновить константу - строковое представление текущего номера версии . Это связано с принципом DRY, и теперь я чувствую, что можно получить версию моего проекта, как определено в .cabal файл из исходного кода? Может быть, Cabal определяет какой-то макрос CPP или что-то еще?Есть ли способ получить версию пакета Cabal в исходном коде пакета?

ответ

5

Действительно, Cabal позволяет получить доступ к информации от .cabal файла в вашей программе . According to Cabal documentation, вы можете импортировать специальный модуль, который существует при строительстве вашего пакета, как это:

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

myVersion :: String 
myVersion = showVersion version 

Модуль Paths_packagename обеспечивает version типа Version.