gitrev-1.3.0: Compile git revision info into Haskell projects

Copyright(c) 2015 Adam C. Foltzer
Safe HaskellNone



Some handy Template Haskell splices for including the current git hash and branch in the code of your project. Useful for including in panic messages, --version output, or diagnostic info for more informative bug reports.

{-# LANGUAGE TemplateHaskell #-}
import Development.GitRev

panic :: String -> a
panic msg = error panicMsg
  where panicMsg =
          concat [ "[panic ", $(gitBranch), "@", $(gitHash)
                 , " (", $(gitCommitDate), ")"
                 , " (", $(gitCommitCount), " commits in HEAD)"
                 , dirty, "] ", msg ]
        dirty | $(gitDirty) = " (uncommitted files present)"
              | otherwise   = ""

main = panic "oh no!"
% cabal exec runhaskell Example.hs
Example.hs: [panic master@2ae047ba5e4a6f0f3e705a43615363ac006099c1 (Mon Jan 11 11:50:59 2016 -0800) (14 commits in HEAD) (uncommitted files present)] oh no!



gitHash :: ExpQ Source #

Return the hash of the current git commit, or UNKNOWN if not in a git repository

gitBranch :: ExpQ Source #

Return the branch (or tag) name of the current git commit, or UNKNOWN if not in a git repository. For detached heads, this will just be HEAD

gitDirty :: ExpQ Source #

Return True if there are non-committed files present in the repository

gitCommitCount :: ExpQ Source #

Return the number of commits in the current head

gitCommitDate :: ExpQ Source #

Return the commit date of the current head