Copyright | (c) 2015 Adam C. Foltzer |
---|---|
License | BSD3 |
Maintainer | acfoltzer@galois.com |
Stability | provisional |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
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!
- gitBranch :: ExpQ
- gitCommitCount :: ExpQ
- gitCommitDate :: ExpQ
- gitDescribe :: ExpQ
- gitDirty :: ExpQ
- gitDirtyTracked :: ExpQ
- gitHash :: ExpQ
Documentation
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
gitCommitCount :: ExpQ Source #
Return the number of commits in the current head
gitCommitDate :: ExpQ Source #
Return the commit date of the current head
gitDescribe :: ExpQ Source #
Return the long git description for the current git commit, or
UNKNOWN
if not in a git repository.
gitDirtyTracked :: ExpQ Source #
Return True
if there are non-commited changes to tracked files
present in the repository