on master help sign in
Allow checking internal links only
commit9ea75c128c2f80bc3b75b1f1b9e718ce6df6dd36 authorJasper Van der Jeugt <m@jaspervdj.be> dateMon 31 Dec 2012, 15:32 (14 years ago) parent24273d0
3 files changed+30−16
src/Hakyll/Check.hs+19−10 src/Hakyll/Commands.hs+2−2 src/Hakyll/Main.hs+9−4
src/Hakyll/Check.hs+19−10
@@ -1,7 +1,8 @@
11--------------------------------------------------------------------------------
22{-# LANGUAGE OverloadedStrings #-}
33module Hakyll.Check
4− ( check
4+ ( Check (..)
5+ , check
56 ) where
67
78
@@ -37,9 +38,14 @@ import Hakyll.Web.Html
3738
3839
3940--------------------------------------------------------------------------------
40−check :: Configuration -> Verbosity -> IO ExitCode
41−check config verbosity = do
42− ((), write) <- runChecker checkDestination config verbosity
41+data Check = All | InternalLinks
42+ deriving (Eq, Ord, Show)
43+
44+
45+--------------------------------------------------------------------------------
46+check :: Configuration -> Verbosity -> Check -> IO ExitCode
47+check config verbosity check' = do
48+ ((), write) <- runChecker checkDestination config verbosity check'
4349 return $ if checkerFaulty write >= 0 then ExitFailure 1 else ExitSuccess
4450
4551
@@ -47,6 +53,7 @@ check config verbosity = do
4753data CheckerRead = CheckerRead
4854 { checkerConfig :: Configuration
4955 , checkerLogger :: Logger
56+ , checkerCheck :: Check
5057 }
5158
5259
@@ -73,10 +80,11 @@ type Checker a = RWST CheckerRead CheckerWrite CheckerState IO a
7380
7481
7582--------------------------------------------------------------------------------
76−runChecker :: Checker a -> Configuration -> Verbosity -> IO (a, CheckerWrite)
77−runChecker checker config verbosity = do
83+runChecker :: Checker a -> Configuration -> Verbosity -> Check
84+ -> IO (a, CheckerWrite)
85+runChecker checker config verbosity check' = do
7886 logger <- Logger.new verbosity
79− let read' = CheckerRead config logger
87+ let read' = CheckerRead config logger check'
8088 (x, _, write) <- runRWST checker read' S.empty
8189 Logger.flush logger
8290 return (x, write)
@@ -146,10 +154,11 @@ checkInternalUrl base url = case url' of
146154--------------------------------------------------------------------------------
147155checkExternalUrl :: String -> Checker ()
148156checkExternalUrl url = do
149− logger <- checkerLogger <$> ask
150− checked <- (url `S.member`) <$> get
157+ logger <- checkerLogger <$> ask
158+ needsCheck <- (== All) . checkerCheck <$> ask
159+ checked <- (url `S.member`) <$> get
151160
152− if checked
161+ if not needsCheck || checked
153162 then Logger.debug logger "Already checked, skipping"
154163 else do
155164 isOk <- liftIO $ handle (failure logger) $
src/Hakyll/Commands.hs+2−2
@@ -49,8 +49,8 @@ build conf verbosity rules = do
4949
5050--------------------------------------------------------------------------------
5151-- | Run the checker and exit
52−check :: Configuration -> Verbosity -> IO ()
53−check config verbosity = Check.check config verbosity >>= exitWith
52+check :: Configuration -> Verbosity -> Check.Check -> IO ()
53+check config verbosity check' = Check.check config verbosity check' >>= exitWith
5454
5555
5656--------------------------------------------------------------------------------
src/Hakyll/Main.hs+9−4
@@ -16,7 +16,8 @@ import System.IO.Unsafe (unsafePerformIO)
1616
1717
1818--------------------------------------------------------------------------------
19−import qualified Hakyll.Commands as Commands
19+import qualified Hakyll.Check as Check
20+import qualified Hakyll.Commands as Commands
2021import qualified Hakyll.Core.Configuration as Config
2122import qualified Hakyll.Core.Logger as Logger
2223import Hakyll.Core.Rules
@@ -36,9 +37,12 @@ hakyllWith conf rules = do
3637 args' <- cmdArgs hakyllArgs
3738
3839 let verbosity' = if verbose args' then Logger.Debug else Logger.Message
40+ check' =
41+ if internal_links args' then Check.InternalLinks else Check.All
42+
3943 case args' of
4044 Build _ -> Commands.build conf verbosity' rules
41− Check _ -> Commands.check conf verbosity'
45+ Check _ _ -> Commands.check conf verbosity' check'
4246 Clean _ -> Commands.clean conf
4347 Deploy _ -> Commands.deploy conf
4448 Help _ -> showHelp
@@ -56,7 +60,7 @@ showHelp = print $ CA.helpText [] CA.HelpFormatOne $ cmdArgsMode hakyllArgs
5660--------------------------------------------------------------------------------
5761data HakyllArgs
5862 = Build {verbose :: Bool}
59− | Check {verbose :: Bool}
63+ | Check {verbose :: Bool, internal_links :: Bool}
6064 | Clean {verbose :: Bool}
6165 | Deploy {verbose :: Bool}
6266 | Help {verbose :: Bool}
@@ -70,7 +74,8 @@ data HakyllArgs
7074hakyllArgs :: HakyllArgs
7175hakyllArgs = modes
7276 [ (Build $ verboseFlag def) &= help "Generate the site"
73− , (Check $ verboseFlag def) &= help "Validate the site output"
77+ , (Check (verboseFlag def) (False &= help "Check internal links only")) &=
78+ help "Validate the site output"
7479 , (Clean $ verboseFlag def) &= help "Clean up and remove cache"
7580 , (Deploy $ verboseFlag def) &= help "Upload/deploy your site"
7681 , (Help $ verboseFlag def) &= help "Show this message" &= auto