{-# LANGUAGE TemplateHaskell #-}
module Language.Haskell.Liquid.UX.SimpleVersion (simpleVersion) where
import Data.Version (Version, showVersion)
import GitHash (GitInfo, giDirty, giHash, tGitInfoCwdTry)
import Language.Haskell.TH (Exp, Q)
import qualified Language.Haskell.TH.Syntax as TH.Syntax
import qualified Language.Haskell.TH.Syntax.Compat as TH.Syntax.Compat
simpleVersion :: Version -> Q Exp
simpleVersion :: Version -> Q Exp
simpleVersion Version
version =
[|
concat
( [ "Version ",
$(String -> Q Exp
forall t (m :: * -> *). (Lift t, Quote m) => t -> m Exp
forall (m :: * -> *). Quote m => String -> m Exp
TH.Syntax.lift (String -> Q Exp) -> String -> Q Exp
forall a b. (a -> b) -> a -> b
$ Version -> String
showVersion Version
version)
]
++ case $(Splice Q (Either String GitInfo) -> Q Exp
forall a (m :: * -> *). Quote m => Splice m a -> m Exp
TH.Syntax.Compat.unTypeSplice Splice Q (Either String GitInfo)
tGitInfoCwdTry) :: Either String GitInfo of
Left _ -> []
Right gi ->
[ ", Git revision ",
giHash gi,
if giDirty gi then " (dirty)" else ""
]
)
|]