diff options
| author | Jasper Van der Jeugt <m@jaspervdj.be> | 2012-11-29 16:22:08 +0100 |
|---|---|---|
| committer | Jasper Van der Jeugt <m@jaspervdj.be> | 2012-11-29 16:22:08 +0100 |
| commit | fe33635a880bfb6f3d182f20aad5542b9f6152ce (patch) | |
| tree | 0db3f07e0fa592926635203f674a8d61ab74239a /src/Hakyll/Core | |
| parent | 0e925e71e18d61f9b4eee715378946f47ad0e819 (diff) | |
| download | hakyll-fe33635a880bfb6f3d182f20aad5542b9f6152ce.tar.gz | |
Fix dependency issues for tags
Diffstat (limited to 'src/Hakyll/Core')
| -rw-r--r-- | src/Hakyll/Core/Dependencies.hs | 6 | ||||
| -rw-r--r-- | src/Hakyll/Core/Rules.hs | 22 |
2 files changed, 25 insertions, 3 deletions
diff --git a/src/Hakyll/Core/Dependencies.hs b/src/Hakyll/Core/Dependencies.hs index e81b38f..7597e61 100644 --- a/src/Hakyll/Core/Dependencies.hs +++ b/src/Hakyll/Core/Dependencies.hs @@ -88,8 +88,10 @@ markOod id' = State.modify $ \s -> dependenciesFor :: Identifier -> DependencyM [Identifier] dependenciesFor id' = do facts <- dependencyFacts <$> State.get - let relevant = fromMaybe [] $ M.lookup id' facts - return [i | IdentifierDependency i <- relevant] + return $ concatMap dependenciesFor' $ fromMaybe [] $ M.lookup id' facts + where + dependenciesFor' (IdentifierDependency i) = [i] + dependenciesFor' (PatternDependency _ is) = is -------------------------------------------------------------------------------- diff --git a/src/Hakyll/Core/Rules.hs b/src/Hakyll/Core/Rules.hs index fb6458b..a234306 100644 --- a/src/Hakyll/Core/Rules.hs +++ b/src/Hakyll/Core/Rules.hs @@ -22,6 +22,9 @@ module Hakyll.Core.Rules , version , compile , route + + -- * Advanced usage + , rulesExtraDependencies ) where @@ -29,7 +32,7 @@ module Hakyll.Core.Rules import Control.Applicative ((<$>)) import Control.Arrow (second) import Control.Monad.Reader (ask, local) -import Control.Monad.Writer (tell) +import Control.Monad.Writer (censor, tell) import Data.Monoid (mappend, mempty) import qualified Data.Set as S @@ -41,6 +44,7 @@ import Data.Typeable (Typeable) -------------------------------------------------------------------------------- import Hakyll.Core.Compiler.Internal +import Hakyll.Core.Dependencies import Hakyll.Core.Identifier import Hakyll.Core.Identifier.Pattern import Hakyll.Core.Item @@ -125,3 +129,19 @@ route route' = Rules $ do version' <- rulesVersion <$> ask unRules $ tellRoute $ matchRoute (pattern `mappend` fromVersion version') route' + + +-------------------------------------------------------------------------------- +-- | Advanced usage: add extra dependencies to compilers. Basically this is +-- needed when you're doing unsafe tricky stuff in the rules monad, but you +-- still want correct builds. +rulesExtraDependencies :: [Dependency] -> Rules a -> Rules a +rulesExtraDependencies deps = Rules . censor addDependencies . unRules + where + -- Adds the dependencies to the compilers in the ruleset + addDependencies ruleSet = ruleSet + { rulesCompilers = + [ (i, compilerTellDependencies deps >> c) + | (i, c) <- rulesCompilers ruleSet + ] + } |
