{-# LANGUAGE DeriveLift #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE CPP #-}
module Yesod.GitRev.Data where
import GitHash
import Language.Haskell.TH.Syntax (Lift, Q, Exp, unTypeQ)
import Yesod.Core
#if MIN_VERSION_GLASGOW_HASKELL(9,0,0,0)
import Language.Haskell.TH (Code, examineCode)
#else
import Language.Haskell.TH.Syntax(TExp)
#endif
data GitRev = GitRev
{ GitRev -> String
gitRevHash :: String
, GitRev -> String
gitRevBranch :: String
, GitRev -> Bool
gitRevDirty :: Bool
, GitRev -> String
gitRevCommitDate :: String
, GitRev -> Int
gitRevCommitCount :: Int
, GitRev -> String
gitRevCommitMessage :: String
}
deriving GitRev -> Q Exp
GitRev -> Q (TExp GitRev)
(GitRev -> Q Exp) -> (GitRev -> Q (TExp GitRev)) -> Lift GitRev
forall t. (t -> Q Exp) -> (t -> Q (TExp t)) -> Lift t
liftTyped :: GitRev -> Q (TExp GitRev)
$cliftTyped :: GitRev -> Q (TExp GitRev)
lift :: GitRev -> Q Exp
$clift :: GitRev -> Q Exp
Lift
type TSpliceable a =
#if MIN_VERSION_GLASGOW_HASKELL(9,0,0,0)
Code Q a
#else
Q (TExp a)
#endif
mkYesodSubData "GitRev" [parseRoutes|
/ GitRevR GET
|]
tGitRev :: TSpliceable GitRev
tGitRev :: Q (TExp GitRev)
tGitRev = [|| gitRevFromGitInfo $$(tGitInfoCwd) ||]
gitRev :: Q Exp
gitRev :: Q Exp
gitRev = Q (TExp GitRev) -> Q Exp
forall a. Q (TExp a) -> Q Exp
unTypeQ (Q (TExp GitRev) -> Q Exp)
-> (Q (TExp GitRev) -> Q (TExp GitRev)) -> Q (TExp GitRev) -> Q Exp
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Q (TExp GitRev) -> Q (TExp GitRev)
forall a. a -> a
examine (Q (TExp GitRev) -> Q Exp) -> Q (TExp GitRev) -> Q Exp
forall a b. (a -> b) -> a -> b
$ Q (TExp GitRev)
tGitRev
where
#if MIN_VERSION_GLASGOW_HASKELL(9,0,0,0)
examine = examineCode
#else
examine :: a -> a
examine = a -> a
forall a. a -> a
id
#endif
gitRevFromGitInfo :: GitInfo -> GitRev
gitRevFromGitInfo :: GitInfo -> GitRev
gitRevFromGitInfo GitInfo
gi = GitRev :: String -> String -> Bool -> String -> Int -> String -> GitRev
GitRev
{ gitRevHash :: String
gitRevHash = GitInfo -> String
giHash GitInfo
gi
, gitRevBranch :: String
gitRevBranch = GitInfo -> String
giBranch GitInfo
gi
, gitRevDirty :: Bool
gitRevDirty = GitInfo -> Bool
giDirty GitInfo
gi
, gitRevCommitDate :: String
gitRevCommitDate = GitInfo -> String
giCommitDate GitInfo
gi
, gitRevCommitCount :: Int
gitRevCommitCount = GitInfo -> Int
giCommitCount GitInfo
gi
, gitRevCommitMessage :: String
gitRevCommitMessage = GitInfo -> String
giCommitMessage GitInfo
gi
}