{-# LANGUAGE DeriveLift #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TypeFamilies #-}
module Yesod.GitRev.Data where
import GitHash
import Language.Haskell.TH.Syntax (Lift, Q, TExp, Exp, unTypeQ)
import Yesod.Core
data GitRev = GitRev
{ gitRevHash :: String
, gitRevBranch :: String
, gitRevDirty :: Bool
, gitRevCommitDate :: String
, gitRevCommitCount :: Int
, gitRevCommitMessage :: String
}
deriving Lift
mkYesodSubData "GitRev" [parseRoutes|
/ GitRevR GET
|]
tGitRev :: Q (TExp GitRev)
tGitRev = [|| gitRevFromGitInfo $$(tGitInfoCwd) ||]
gitRev :: Q Exp
gitRev = unTypeQ tGitRev
gitRevFromGitInfo :: GitInfo -> GitRev
gitRevFromGitInfo gi = GitRev
{ gitRevHash = giHash gi
, gitRevBranch = giBranch gi
, gitRevDirty = giDirty gi
, gitRevCommitDate = giCommitDate gi
, gitRevCommitCount = giCommitCount gi
, gitRevCommitMessage = giCommitMessage gi
}