yesod-gitrev 0.2.0.0 → 0.2.1
raw patch · 7 files changed
+101/−26 lines, 7 filesdep +githashdep +yesod-gitrevdep −gitrevdep ~basedep ~yesod-corePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: githash, yesod-gitrev
Dependencies removed: gitrev
Dependency ranges changed: base, yesod-core
API changes (from Hackage documentation)
+ Yesod.GitRev: [gitRevCommitCount] :: GitRev -> Int
+ Yesod.GitRev: [gitRevCommitDate] :: GitRev -> String
+ Yesod.GitRev: [gitRevCommitMessage] :: GitRev -> String
- Yesod.GitRev: GitRev :: String -> String -> Bool -> GitRev
+ Yesod.GitRev: GitRev :: String -> String -> Bool -> String -> Int -> String -> GitRev
Files
- ChangeLog.md +4/−0
- README.md +2/−0
- examples/ExampleMain.hs +27/−0
- src/Yesod/GitRev.hs +10/−0
- src/Yesod/GitRev/Data.hs +32/−23
- tests/TestExamples.hs +5/−0
- yesod-gitrev.cabal +21/−3
ChangeLog.md view
@@ -1,3 +1,7 @@+## 0.2.1++- Move over to `githash`+ ## 0.2.0.0 - Upgrade to yesod-core 1.6
README.md view
@@ -1,5 +1,7 @@ A subsite for displaying git information. +[](https://hackage.haskell.org/package/yesod-gitrev) [](https://travis-ci.org/DanBurton/yesod-gitrev)+ You can use the `gitRev` splice (or `tGitRev` typed splice) to generate a value of type `GitRev`. Put this in your app's foundation,
+ examples/ExampleMain.hs view
@@ -0,0 +1,27 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++-- to run this file, from the root dir of this repo:+-- stack build+-- stack runghc examples/ExampleMain.hs+-- Then visit localhost:3000/build-version in your browser++module ExampleMain where++import Yesod.Core+import Yesod.GitRev++data Master = Master+ { getGitRev :: GitRev+ }++mkYesod "Master" [parseRoutes|+/build-version GitRevR GitRev getGitRev+|]++instance Yesod Master++main :: IO ()+main = warp 3000 $ Master $$(tGitRev)
src/Yesod/GitRev.hs view
@@ -28,11 +28,21 @@ <dd>#{gitRevBranch} <dt>Dirty <dd>#{gitRevDirty}+ <dt>Commit Date+ <dd>#{gitRevCommitDate}+ <dt>Commit Count+ <dd>#{gitRevCommitCount}+ <dt>Commit Message+ <dd>#{gitRevCommitMessage} |]+ -- TODO: derive & use toJSON provideRep $ return $ object [ "hash" .= gitRevHash , "branch" .= gitRevBranch , "dirty" .= gitRevDirty+ , "commitDate" .= gitRevCommitDate+ , "commitCount" .= gitRevCommitCount+ , "commitMessage" .= gitRevCommitMessage ] instance Yesod site => YesodSubDispatch GitRev site where
src/Yesod/GitRev/Data.hs view
@@ -1,43 +1,52 @@-{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE DeriveLift #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TypeFamilies #-} module Yesod.GitRev.Data where -import Development.GitRev (gitHash, gitBranch, gitDirty)-import Language.Haskell.TH.Syntax (Lift(lift), Q, TExp, Exp, unsafeTExpCoerce)-import Yesod.Core hiding (lift)+import GitHash+import Language.Haskell.TH.Syntax (Lift, Q, TExp, Exp, unTypeQ)+import Yesod.Core +-- | You should not construct one of these yourself.+-- Instead, use gitRev or tGitRev.+-- Fields added to this record are treated as a minor version bump. data GitRev = GitRev { gitRevHash :: String , gitRevBranch :: String , gitRevDirty :: Bool+ , gitRevCommitDate :: String+ -- ^ @since 0.2.1+ , gitRevCommitCount :: Int+ -- ^ @since 0.2.1+ , gitRevCommitMessage :: String+ -- ^ @since 0.2.1 }+ deriving Lift mkYesodSubData "GitRev" [parseRoutes| / GitRevR GET |] -instance Lift GitRev where- lift GitRev{..} =- [|- GitRev- { gitRevHash = $(lift gitRevHash)- , gitRevBranch = $(lift gitRevBranch)- , gitRevDirty = $(lift gitRevDirty)- }- |]-+-- | A typed splice for creating a GitRev.+-- Example: $$(tGitRev) :: GitRev tGitRev :: Q (TExp GitRev)-tGitRev = unsafeTExpCoerce gitRev+tGitRev = [|| gitRevFromGitInfo $$(tGitInfoCwd) ||] +-- | An untyped splice for creating a GitRev.+-- Example: $(gitRev) :: GitRev gitRev :: Q Exp-gitRev =- [|- GitRev- { gitRevHash = $gitHash- , gitRevBranch = $gitBranch- , gitRevDirty = $gitDirty- }- |]+gitRev = unTypeQ tGitRev++-- This function is considered to be "internal".+-- Changes to this function will not be accounted for in minor version bumps.+gitRevFromGitInfo :: GitInfo -> GitRev+gitRevFromGitInfo gi = GitRev+ { gitRevHash = giHash gi+ , gitRevBranch = giBranch gi+ , gitRevDirty = giDirty gi+ , gitRevCommitDate = giCommitDate gi+ , gitRevCommitCount = giCommitCount gi+ , gitRevCommitMessage = giCommitMessage gi+ }
+ tests/TestExamples.hs view
@@ -0,0 +1,5 @@+import qualified ExampleMain++-- TODO: Run the exampleMain server and test that it returns an appopriate response+main :: IO ()+main = putStrLn "ExampleMain compiled"
yesod-gitrev.cabal view
@@ -1,10 +1,13 @@ name: yesod-gitrev-version: 0.2.0.0+version: 0.2.1 synopsis: A subsite for displaying git information. author: Dan Burton maintainer: danburton.email@gmail.com +category: Web+description: (Please see the readme) https://github.com/DanBurton/yesod-gitrev#readme+ homepage: https://github.com/DanBurton/yesod-gitrev bug-reports: https://github.com/DanBurton/yesod-gitrev/issues @@ -15,6 +18,8 @@ build-type: Simple cabal-version: >=1.10 +tested-with: GHC == 8.6.3, GHC == 8.4.4+ extra-source-files: README.md ChangeLog.md @@ -26,11 +31,24 @@ build-depends: base >=4 && <5 , aeson- , gitrev+ , githash , template-haskell- , yesod-core+ , yesod-core >= 1.6 hs-source-dirs: src default-language: Haskell2010++test-suite examples+ type: exitcode-stdio-1.0+ hs-source-dirs: examples, tests+ main-is: TestExamples.hs+ build-depends:+ base+ , yesod-core+ , yesod-gitrev+ other-modules:+ ExampleMain+ default-language: Haskell2010+ source-repository head type: git