hgrev: Compile Mercurial (hg) version info into Haskell code

[ bsd3, development, library ] [ Propose Tags ]
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 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
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.

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.2.0, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6
Dependencies aeson (>=0.8 && <0.10), base (>=4.7 && <4.9), bytestring (>=0.10 && <0.11), directory (>=1.2 && <1.3), filepath (>=1.4 && <1.5), process (>=1.2 && <1.4), template-haskell (>=2.10 && <2.11) [details]
License MIT
Author Luke Hoersten
Maintainer luke@hoersten.org
Revised Revision 4 made by LukeHoersten at 2015-09-28T15:13:30Z
Category Development
Home page https://github.com/LukeHoersten/hgrev
Bug tracker https://github.com/LukeHoersten/hgrev/issues
Source repo head: git clone git://github.com/LukeHoersten/hgrev.git
Uploaded by LukeHoersten at 2015-09-26T17:48:19Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 8137 total (39 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2015-10-13 [all 2 reports]