summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVeronika Romashkina <vrom911@gmail.com>2020-02-26 10:49:03 +0000
committerGitHub <noreply@github.com>2020-02-26 11:49:03 +0100
commitd2ee5b2b0eb2afb970ab8d4feed84434dc8236e0 (patch)
tree56a3be8e658dfc134259c61314cca00964f692d8
parent7b924e7d6b98db7de64fa8fc5cae14a3ea35965c (diff)
downloadhakyll-d2ee5b2b0eb2afb970ab8d4feed84434dc8236e0.tar.gz
Support GHC-8.8
Add MonadFail instances and constraints.
-rw-r--r--.gitignore3
-rw-r--r--CHANGELOG.md4
-rw-r--r--hakyll.cabal10
-rw-r--r--lib/Hakyll/Core/Compiler/Internal.hs8
-rw-r--r--lib/Hakyll/Core/Metadata.hs2
-rw-r--r--lib/Hakyll/Core/Rules/Internal.hs2
-rw-r--r--lib/Hakyll/Web/Template/Context.hs2
-rw-r--r--lib/Hakyll/Web/Template/List.hs8
-rw-r--r--stack.yaml12
9 files changed, 29 insertions, 22 deletions
diff --git a/.gitignore b/.gitignore
index 49f55c1..eab2fac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,9 @@ tags
cabal.sandbox.config
.cabal-sandbox/
.stack-work
+dist
+dist-*
+.ghc.environment.*
# Ignore test builds.
tests/Main
diff --git a/CHANGELOG.md b/CHANGELOG.md
index af21933..3f5bb3e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,10 @@ title: Releases
# Releases
+## Unreleased
+
+- Support GHC-8.8. Add `MonadFail` instances and constraints.
+
## Hakyll 4.13.0.1 (2019-09-18)
- Add missing test files (contribution by Justin Humm)
diff --git a/hakyll.cabal b/hakyll.cabal
index 927498c..90ba220 100644
--- a/hakyll.cabal
+++ b/hakyll.cabal
@@ -179,15 +179,15 @@ Library
lrucache >= 1.1.1 && < 1.3,
mtl >= 1 && < 2.3,
network-uri >= 2.6 && < 2.7,
- optparse-applicative >= 0.12 && < 0.15,
+ optparse-applicative >= 0.12 && < 0.16,
parsec >= 3.0 && < 3.2,
process >= 1.6 && < 1.7,
random >= 1.0 && < 1.2,
- regex-tdfa >= 1.1 && < 1.3,
+ regex-tdfa >= 1.1 && < 1.4,
resourcet >= 1.1 && < 1.3,
scientific >= 0.3.4 && < 0.4,
tagsoup >= 0.13.1 && < 0.15,
- template-haskell >= 2.14 && < 2.15,
+ template-haskell >= 2.14 && < 2.16,
text >= 0.11 && < 1.3,
time >= 1.8 && < 1.10,
time-locale-compat >= 0.1 && < 0.2,
@@ -231,7 +231,7 @@ Library
Other-Modules:
Hakyll.Web.Pandoc.Binary
Build-Depends:
- pandoc >= 2.0.5 && < 2.8,
+ pandoc >= 2.0.5 && < 2.10,
pandoc-citeproc >= 0.14 && < 0.17
Cpp-options:
-DUSE_PANDOC
@@ -326,4 +326,4 @@ Executable hakyll-website
base >= 4 && < 5,
directory >= 1.0 && < 1.4,
filepath >= 1.0 && < 1.5,
- pandoc >= 2.0.5 && < 2.8
+ pandoc >= 2.0.5 && < 2.10
diff --git a/lib/Hakyll/Core/Compiler/Internal.hs b/lib/Hakyll/Core/Compiler/Internal.hs
index 762630c..3b62e2d 100644
--- a/lib/Hakyll/Core/Compiler/Internal.hs
+++ b/lib/Hakyll/Core/Compiler/Internal.hs
@@ -40,6 +40,7 @@ module Hakyll.Core.Compiler.Internal
import Control.Applicative (Alternative (..))
import Control.Exception (SomeException, handle)
import Control.Monad (forM_)
+import qualified Control.Monad.Fail as Fail
import Control.Monad.Except (MonadError (..))
import Data.List.NonEmpty (NonEmpty (..))
import qualified Data.List.NonEmpty as NonEmpty
@@ -183,9 +184,14 @@ instance Monad Compiler where
CompilerError e -> return $ CompilerError e
{-# INLINE (>>=) #-}
- fail = compilerThrow . return
+#if !(MIN_VERSION_base(4,13,0))
+ fail = Fail.fail
{-# INLINE fail #-}
+#endif
+instance Fail.MonadFail Compiler where
+ fail = compilerThrow . return
+ {-# INLINE fail #-}
--------------------------------------------------------------------------------
instance Applicative Compiler where
diff --git a/lib/Hakyll/Core/Metadata.hs b/lib/Hakyll/Core/Metadata.hs
index 1cf536e..9d99857 100644
--- a/lib/Hakyll/Core/Metadata.hs
+++ b/lib/Hakyll/Core/Metadata.hs
@@ -66,7 +66,7 @@ getMetadataField identifier key = do
--------------------------------------------------------------------------------
-- | Version of 'getMetadataField' which throws an error if the field does not
-- exist.
-getMetadataField' :: MonadMetadata m => Identifier -> String -> m String
+getMetadataField' :: (MonadFail m, MonadMetadata m) => Identifier -> String -> m String
getMetadataField' identifier key = do
field <- getMetadataField identifier key
case field of
diff --git a/lib/Hakyll/Core/Rules/Internal.hs b/lib/Hakyll/Core/Rules/Internal.hs
index 647af74..2617798 100644
--- a/lib/Hakyll/Core/Rules/Internal.hs
+++ b/lib/Hakyll/Core/Rules/Internal.hs
@@ -88,7 +88,7 @@ emptyRulesState = RulesState Nothing Nothing
-- | The monad used to compose rules
newtype Rules a = Rules
{ unRules :: RWST RulesRead RuleSet RulesState IO a
- } deriving (Monad, Functor, Applicative)
+ } deriving (Monad, MonadFail, Functor, Applicative)
--------------------------------------------------------------------------------
diff --git a/lib/Hakyll/Web/Template/Context.hs b/lib/Hakyll/Web/Template/Context.hs
index 8627d5b..a5049c2 100644
--- a/lib/Hakyll/Web/Template/Context.hs
+++ b/lib/Hakyll/Web/Template/Context.hs
@@ -365,7 +365,7 @@ dateFieldWith locale key format = field key $ \i -> do
-- | Parser to try to extract and parse the time from the @published@
-- field or from the filename. See 'dateField' for more information.
-- Exported for user convenience.
-getItemUTC :: MonadMetadata m
+getItemUTC :: (MonadMetadata m, MonadFail m)
=> TimeLocale -- ^ Output time locale
-> Identifier -- ^ Input page
-> m UTCTime -- ^ Parsed UTCTime
diff --git a/lib/Hakyll/Web/Template/List.hs b/lib/Hakyll/Web/Template/List.hs
index 4d769fc..db3fff1 100644
--- a/lib/Hakyll/Web/Template/List.hs
+++ b/lib/Hakyll/Web/Template/List.hs
@@ -60,7 +60,7 @@ applyJoinTemplateList delimiter tpl context items = do
--------------------------------------------------------------------------------
-- | Sort pages chronologically. Uses the same method as 'dateField' for
-- extracting the date.
-chronological :: MonadMetadata m => [Item a] -> m [Item a]
+chronological :: (MonadMetadata m, MonadFail m) => [Item a] -> m [Item a]
chronological =
sortByM $ getItemUTC defaultTimeLocale . itemIdentifier
where
@@ -71,14 +71,14 @@ chronological =
--------------------------------------------------------------------------------
-- | The reverse of 'chronological'
-recentFirst :: MonadMetadata m => [Item a] -> m [Item a]
+recentFirst :: (MonadMetadata m, MonadFail m) => [Item a] -> m [Item a]
recentFirst = liftM reverse . chronological
--------------------------------------------------------------------------------
-- | Version of 'chronological' which doesn't need the actual items.
sortChronological
- :: MonadMetadata m => [Identifier] -> m [Identifier]
+ :: (MonadMetadata m, MonadFail m) => [Identifier] -> m [Identifier]
sortChronological ids =
liftM (map itemIdentifier) $ chronological [Item i () | i <- ids]
@@ -86,6 +86,6 @@ sortChronological ids =
--------------------------------------------------------------------------------
-- | Version of 'recentFirst' which doesn't need the actual items.
sortRecentFirst
- :: MonadMetadata m => [Identifier] -> m [Identifier]
+ :: (MonadMetadata m, MonadFail m) => [Identifier] -> m [Identifier]
sortRecentFirst ids =
liftM (map itemIdentifier) $ recentFirst [Item i () | i <- ids]
diff --git a/stack.yaml b/stack.yaml
index f8a83a4..36891d2 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,4 +1,4 @@
-resolver: lts-13.29
+resolver: lts-15.0
save-hackage-creds: false
flags:
@@ -23,11 +23,5 @@ build:
haddock-deps: false
extra-deps:
-- 'cmark-gfm-0.2.0'
-- 'hslua-module-system-0.2.1'
-- 'ipynb-0.1'
-- 'lrucache-1.2.0.1'
-- 'pandoc-2.7.3'
-- 'pandoc-citeproc-0.16.2'
-- 'skylighting-0.8.2'
-- 'skylighting-core-0.8.2'
+- 'http2-1.6.5'
+- 'warp-3.2.28'