packages feed

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 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. +[![Hackage](https://img.shields.io/hackage/v/yesod-gitrev.svg)](https://hackage.haskell.org/package/yesod-gitrev) [![Build Status](https://travis-ci.org/DanBurton/yesod-gitrev.svg)](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