on master help sign in
Revert "Track metadata dependencies"

This reverts commit 712ffa39b5857fdc5cdae1db38a177267a430b11. Conflicts: src/Hakyll/Core/Metadata.hs src/Hakyll/Core/Rules/Default.hs

commit6552dd5bc01e122d550e9ce664646a4c719145f7 authorJasper Van der Jeugt <m@jaspervdj.be> dateWed 26 Mar 2014, 11:30 (13 years ago) parente5446fd
5 files changed+14−47
hakyll.cabal−1 src/Hakyll/Core/Metadata.hs−11 src/Hakyll/Core/Provider/Metadata.hs+12−8 src/Hakyll/Core/Rules/Default.hs−24 src/Hakyll/Core/Runtime.hs+2−3
hakyll.cabal−1
@@ -132,7 +132,6 @@ Library
132132 Hakyll.Core.Provider.Metadata
133133 Hakyll.Core.Provider.MetadataCache
134134 Hakyll.Core.Rules.Internal
135− Hakyll.Core.Rules.Default
136135 Hakyll.Core.Runtime
137136 Hakyll.Core.Store
138137 Hakyll.Core.Util.File
src/Hakyll/Core/Metadata.hs−11
@@ -5,7 +5,6 @@ module Hakyll.Core.Metadata
55 , getMetadataField
66 , getMetadataField'
77 , makePatternDependency
8− , metadataFiles
98 ) where
109
1110
@@ -13,7 +12,6 @@ module Hakyll.Core.Metadata
1312import Control.Monad (forM)
1413import Data.Map (Map)
1514import qualified Data.Map as M
16−import System.FilePath.Posix ((</>), takeDirectory)
1715
1816
1917--------------------------------------------------------------------------------
@@ -63,12 +61,3 @@ makePatternDependency :: MonadMetadata m => Pattern -> m Dependency
6361makePatternDependency pattern = do
6462 matches' <- getMatches pattern
6563 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
4444 Nothing -> return M.empty
4545 Just mi' -> loadMetadataFile $ resourceFilePath p mi'
4646
47− gmd <- loadGlobalMetadata p identifier
47+ gmd <- loadGlobalMetadata p $ toFilePath identifier
4848
4949 return (M.unions [md, gmd], body)
5050 where
@@ -141,17 +141,21 @@ page = do
141141
142142--------------------------------------------------------------------------------
143143-- | Load directory-wise metadata
144−loadGlobalMetadata :: Provider -> Identifier -> IO Metadata
145−loadGlobalMetadata p fp = liftM M.fromList $ loadgm fp where
146− loadgm :: Identifier -> IO [(String, String)]
147− loadgm = liftM concat . mapM loadOne . reverse . filter (resourceExists p) . metadataFiles
148− loadOne mfp =
144+loadGlobalMetadata :: Provider -> FilePath -> IO (M.Map String String)
145+loadGlobalMetadata p fp = liftM M.fromList $ loadgm $ takeDirectory fp where
146+ loadgm :: FilePath -> IO [(String, String)]
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
153+ loadOne mfp dir =
149154 let path = resourceFilePath p mfp
150− dir = takeDirectory $ toFilePath mfp
151155 -- TODO: It might be better to print warning and continue
152156 in either (error.show) (findMetadata dir) . P.parse namedMetadata path <$> readFile path
153157 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)
155159
156160namedMetadata :: Parser [(String, [(String, String)])]
157161namedMetadata = 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
3535import Hakyll.Core.Provider
3636import Hakyll.Core.Routes
3737import Hakyll.Core.Rules.Internal
38−import Hakyll.Core.Rules.Default
3938import Hakyll.Core.Store (Store)
4039import qualified Hakyll.Core.Store as Store
4140import Hakyll.Core.Util.File
@@ -54,7 +53,7 @@ run config verbosity rules = do
5453 provider <- newProvider store (shouldIgnoreFile config) $
5554 providerDirectory config
5655 Logger.message logger "Running rules..."
57− ruleSet <- runRules (internalRules >> rules) provider
56+ ruleSet <- runRules rules provider
5857
5958 -- Get old facts
6059 mOldFacts <- Store.get store factsKey
@@ -187,7 +186,7 @@ chase trail id'
187186 config <- runtimeConfiguration <$> ask
188187 Logger.debug logger $ "Processing " ++ show id'
189188
190− let compiler = addMetadataDependencies >> todo M.! id'
189+ let compiler = todo M.! id'
191190 read' = CompilerRead
192191 { compilerConfig = config
193192 , compilerUnderlying = id'