on master help sign in
Revert "Track metadata dependencies"
6552dd5Jasper Van der Jeugt
hakyll.cabal−1
@@ -132,7 +132,6 @@ Library
132 Hakyll.Core.Provider.Metadata
132 Hakyll.Core.Provider.Metadata
133 Hakyll.Core.Provider.MetadataCache
133 Hakyll.Core.Provider.MetadataCache
134 Hakyll.Core.Rules.Internal
134 Hakyll.Core.Rules.Internal
135− Hakyll.Core.Rules.Default
136 Hakyll.Core.Runtime
135 Hakyll.Core.Runtime
137 Hakyll.Core.Store
136 Hakyll.Core.Store
138 Hakyll.Core.Util.File
137 Hakyll.Core.Util.File
src/Hakyll/Core/Metadata.hs−11
@@ -5,7 +5,6 @@ module Hakyll.Core.Metadata
5 , getMetadataField
5 , getMetadataField
6 , getMetadataField'
6 , getMetadataField'
7 , makePatternDependency
7 , makePatternDependency
8− , metadataFiles
9 ) where
8 ) where
10
9
11
10
@@ -13,7 +12,6 @@ module Hakyll.Core.Metadata
13import Control.Monad (forM)
12import Control.Monad (forM)
14import Data.Map (Map)
13import Data.Map (Map)
15import qualified Data.Map as M
14import qualified Data.Map as M
16−import System.FilePath.Posix ((</>), takeDirectory)
17
15
18
16
19--------------------------------------------------------------------------------
17--------------------------------------------------------------------------------
@@ -63,12 +61,3 @@ makePatternDependency :: MonadMetadata m => Pattern -> m Dependency
63makePatternDependency pattern = do
61makePatternDependency pattern = do
64 matches' <- getMatches pattern
62 matches' <- getMatches pattern
65 return $ PatternDependency pattern matches'
63 return $ PatternDependency pattern matches'
66−
67−--------------------------------------------------------------------------------
68−-- | Returns a list of all directory-wise metadata files, subdir first, global last
69−metadataFiles :: Identifier -> [Identifier]
70−metadataFiles identifier = local : go (takeDirectory $ toFilePath identifier) where
71− go "." = [fromFilePath "metadata"]
72− go dir = fromFilePath (dir </> "metadata") : go (takeDirectory dir)
73− local = fromFilePath $ toFilePath identifier ++ ".metadata"
74−
src/Hakyll/Core/Provider/Metadata.hs+12−8
@@ -44,7 +44,7 @@ loadMetadata p identifier = do
44 Nothing -> return M.empty
44 Nothing -> return M.empty
45 Just mi' -> loadMetadataFile $ resourceFilePath p mi'
45 Just mi' -> loadMetadataFile $ resourceFilePath p mi'
46
46
47− gmd <- loadGlobalMetadata p identifier
47+ gmd <- loadGlobalMetadata p $ toFilePath identifier
48
48
49 return (M.unions [md, gmd], body)
49 return (M.unions [md, gmd], body)
50 where
50 where
@@ -141,17 +141,21 @@ page = do
141
141
142--------------------------------------------------------------------------------
142--------------------------------------------------------------------------------
143-- | Load directory-wise metadata
143-- | Load directory-wise metadata
144−loadGlobalMetadata :: Provider -> Identifier -> IO Metadata
144+loadGlobalMetadata :: Provider -> FilePath -> IO (M.Map String String)
145−loadGlobalMetadata p fp = liftM M.fromList $ loadgm fp where
145+loadGlobalMetadata p fp = liftM M.fromList $ loadgm $ takeDirectory fp where
146− loadgm :: Identifier -> IO [(String, String)]
146+ loadgm :: FilePath -> IO [(String, String)]
147− loadgm = liftM concat . mapM loadOne . reverse . filter (resourceExists p) . metadataFiles
147+ loadgm dir | dir == "." = return []
148+ | otherwise = do
149+ let mfp = fromFilePath $ combine dir "metadata"
150+ md <- if resourceExists p mfp then loadOne mfp dir else return []
151+ others <- loadgm (takeDirectory dir)
152+ return $ others ++ md
148− loadOne mfp =
153+ loadOne mfp dir =
149 let path = resourceFilePath p mfp
154 let path = resourceFilePath p mfp
150− dir = takeDirectory $ toFilePath mfp
151 -- TODO: It might be better to print warning and continue
155 -- TODO: It might be better to print warning and continue
152 in either (error.show) (findMetadata dir) . P.parse namedMetadata path <$> readFile path
156 in either (error.show) (findMetadata dir) . P.parse namedMetadata path <$> readFile path
153 findMetadata dir =
157 findMetadata dir =
154− concatMap snd . filter (flip matches fp . fromGlob . combine dir . fst)
158+ concatMap snd . filter (flip matches (fromFilePath fp) . fromGlob . combine dir . fst)
155
159
156namedMetadata :: Parser [(String, [(String, String)])]
160namedMetadata :: Parser [(String, [(String, String)])]
157namedMetadata = liftA2 (:) (namedMetadataBlock False) $ P.many $ namedMetadataBlock True
161namedMetadata = liftA2 (:) (namedMetadataBlock False) $ P.many $ namedMetadataBlock True
src/Hakyll/Core/Rules/Default.hsdeleted−24
@@ -1,24 +0,0 @@
1−{-# LANGUAGE OverloadedStrings #-}
2−module Hakyll.Core.Rules.Default
3− ( internalRules
4− , addMetadataDependencies
5− )
6−where
7−import Hakyll.Core.Rules
8−import Hakyll.Core.Compiler
9−import Hakyll.Core.Compiler.Internal (compilerTellDependencies)
10−import Hakyll.Core.Metadata (getMatches, metadataFiles)
11−import Hakyll.Core.Identifier.Pattern(fromList)
12−
13−internalRules :: Rules ()
14−internalRules = do
15− match "metadata" $ compile $ makeItem ()
16− match "**/metadata" $ compile $ makeItem ()
17− match "**.metadata" $ compile $ makeItem ()
18−
19−--------------------------------------------------------------------------------
20−addMetadataDependencies :: Compiler ()
21−addMetadataDependencies =
22− compilerTellDependencies . map IdentifierDependency =<< getMatches . fromList =<< fmap metadataFiles getUnderlying
23−
24−
src/Hakyll/Core/Runtime.hs+2−3
@@ -35,7 +35,6 @@ import qualified Hakyll.Core.Logger as Logger
35import Hakyll.Core.Provider
35import Hakyll.Core.Provider
36import Hakyll.Core.Routes
36import Hakyll.Core.Routes
37import Hakyll.Core.Rules.Internal
37import Hakyll.Core.Rules.Internal
38−import Hakyll.Core.Rules.Default
39import Hakyll.Core.Store (Store)
38import Hakyll.Core.Store (Store)
40import qualified Hakyll.Core.Store as Store
39import qualified Hakyll.Core.Store as Store
41import Hakyll.Core.Util.File
40import Hakyll.Core.Util.File
@@ -54,7 +53,7 @@ run config verbosity rules = do
54 provider <- newProvider store (shouldIgnoreFile config) $
53 provider <- newProvider store (shouldIgnoreFile config) $
55 providerDirectory config
54 providerDirectory config
56 Logger.message logger "Running rules..."
55 Logger.message logger "Running rules..."
57− ruleSet <- runRules (internalRules >> rules) provider
56+ ruleSet <- runRules rules provider
58
57
59 -- Get old facts
58 -- Get old facts
60 mOldFacts <- Store.get store factsKey
59 mOldFacts <- Store.get store factsKey
@@ -187,7 +186,7 @@ chase trail id'
187 config <- runtimeConfiguration <$> ask
186 config <- runtimeConfiguration <$> ask
188 Logger.debug logger $ "Processing " ++ show id'
187 Logger.debug logger $ "Processing " ++ show id'
189
188
190− let compiler = addMetadataDependencies >> todo M.! id'
189+ let compiler = todo M.! id'
191 read' = CompilerRead
190 read' = CompilerRead
192 { compilerConfig = config
191 { compilerConfig = config
193 , compilerUnderlying = id'
192 , compilerUnderlying = id'