HgRev
Compile Mercurial (hg) version info into Haskell code
Overview
hgrev provides two modules:
Development.HgRev -
Mercurial (hg) Haskell API
Development.HgRev.TH - Template Haskell splice to compile version
info into Haskell code
Use $(hgRevStateTH defFormat) with Template Haskell enabled to
insert the formatted version string.
Requirements
hgrev requires the hg binary version 3.2 or greater is installed
and available on the system. Development.HgRev.HgRev and
Development.HgRev.HgState are obtained via two separate calls to
hg because working directory state isn’t available programmatically.
Usage Example
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
module Example where
import Data.Monoid ((<>))
import Data.Text (Text, pack)
import Development.HgRev.TH (defFormat, hgRevStateTH, jsonFormat)
import Options.Applicative (Parser, ParserInfo, execParser, fullDesc,
help, helper, info, infoOption, long,
progDesc, short)
main :: IO ()
main = execParser parserInfo >> return ()
verSwitch :: Parser (a -> a)
verSwitch =
infoOption ("HG rev: " <> $(hgRevStateTH defFormat))
$ long "version"
<> short 'v'
<> help "Display version information"
jsonSwitch :: Parser (a -> a)
jsonSwitch =
infoOption $(hgRevStateTH jsonFormat)
$ long "json"
<> short 'J'
<> help "Display JSON version information"
parserInfo :: ParserInfo (a -> a)
parserInfo = info (helper <*> verSwitch <* jsonSwitch) fullDesc
Check out the gitrev
package for similar git functionality.