tools: hakyll cleanup

This commit is contained in:
Simon Michael 2010-07-07 16:49:33 +00:00
parent 0276c095ca
commit 5732e42cc3

View File

@ -1,20 +1,52 @@
#!/usr/bin/env runhaskell #!/usr/bin/env runhaskell
{-o {-
hakyll build script for hledger.org hakyll build script for hledger.org
requires Hakyll >= 2.1, pandoc >= 1.5 requires Hakyll >= 2.1, pandoc >= 1.5
-} -}
import Control.Monad (forM_) import Control.Monad (forM_)
import Control.Monad.Trans (liftIO) import Control.Monad.Trans (liftIO)
import System.Process import System.Process (system)
import Text.Hakyll import Text.Hakyll (hakyllWithConfiguration, defaultHakyllConfiguration)
import Text.Hakyll.HakyllMonad import Text.Hakyll.HakyllMonad (HakyllConfiguration(..))
import Text.Hakyll.Render import Text.Hakyll.Render (renderChain, static)
import Text.Hakyll.CreateContext (createPage, createCustomPage, createListing) import Text.Hakyll.CreateContext (createPage, createCustomPage, createListing)
import Text.Pandoc import Text.Pandoc (ParserState(..), WriterOptions(..), defaultParserState, defaultWriterOptions)
import Text.Printf import Text.Printf
pandocparsercfg = defaultParserState { baseurl = "http://hledger.org"
main = hakyllWithConfiguration cfg $ do
mapM_ renderParentDirPage
["README.rst"
,"README2.rst"
,"NEWS.rst"
,"SCREENSHOTS.rst"
,"MANUAL.markdown"
,"CONTRIBUTORS.rst"
]
mapM_ static
["style.css"
,"sshot.png"
,"watchhours.png"
,"hledger-screen-1.png"
,"hledger-charts-2.png"
]
where
-- Render a page from the parent directory as if it was in the hakyll
-- root dir, setting up a symbolic link when needed.
renderParentDirPage p = do
liftIO $ system $ printf "[ -f %s ] || ln -s ../%s" p p
renderChain ["site.tmpl"] $ createPage p
cfg :: HakyllConfiguration
cfg = (defaultHakyllConfiguration baseurl) {
-- ,additionalContext = Context -- An additional context to use when rendering. This additional context is used globally.
-- ,siteDirectory = FilePath -- Directory where the site is placed.
-- ,cacheDirectory = FilePath -- Directory for cache files.
-- ,enableIndexUrl = Bool -- Enable index links.
-- ,previewPollDelay = Int -- Delay between polls in preview mode.
pandocParserState = defaultParserState {
-- stateParseRaw = False, -- ^ Parse raw HTML and LaTeX? -- stateParseRaw = False, -- ^ Parse raw HTML and LaTeX?
-- stateParserContext = NullState, -- ^ Inside list? -- stateParserContext = NullState, -- ^ Inside list?
-- stateQuoteContext = NoQuote, -- ^ Inside quoted environment? -- stateQuoteContext = NoQuote, -- ^ Inside quoted environment?
@ -33,8 +65,7 @@ pandocparsercfg = defaultParserState {
-- stateHeaderTable = [], -- ^ Ordered list of header types used -- stateHeaderTable = [], -- ^ Ordered list of header types used
-- stateIndentedCodeClasses = [] -- ^ Classes to use for indented code blocks -- stateIndentedCodeClasses = [] -- ^ Classes to use for indented code blocks
} }
,pandocWriterOptions = defaultWriterOptions {
pandocwritercfg = defaultWriterOptions {
writerStandalone = False -- ^ Include header and footer writerStandalone = False -- ^ Include header and footer
-- ,writerTemplate = "" -- ^ Template to use in standalone mode -- ,writerTemplate = "" -- ^ Template to use in standalone mode
-- ,writerVariables = [] -- ^ Variables to set in template -- ,writerVariables = [] -- ^ Variables to set in template
@ -55,39 +86,5 @@ pandocwritercfg = defaultWriterOptions {
-- ,writerEmailObfuscation = JavascriptObfuscation -- ^ How to obfuscate emails -- ,writerEmailObfuscation = JavascriptObfuscation -- ^ How to obfuscate emails
-- ,writerIdentifierPrefix = "" -- ^ Prefix for section & note ids in HTML -- ,writerIdentifierPrefix = "" -- ^ Prefix for section & note ids in HTML
} }
hakyllcfg = (defaultHakyllConfiguration "http://hledger.org") {
-- absoluteUrl = "http://hledger.org" -- Absolute URL of the site.
-- ,additionalContext = Context -- An additional context to use when rendering. This additional context is used globally.
-- ,siteDirectory = FilePath -- Directory where the site is placed.
-- ,cacheDirectory = FilePath -- Directory for cache files.
-- ,enableIndexUrl = Bool -- Enable index links.
-- ,previewPollDelay = Int -- Delay between polls in preview mode.
pandocParserState = pandocparsercfg
,pandocWriterOptions = pandocwritercfg
} }
main = hakyllWithConfiguration hakyllcfg $ do
-- renderChain [] $ createPage "t.markdown"
mapM_ renderParentDirPage
["README.rst"
,"README2.rst"
,"NEWS.rst"
,"SCREENSHOTS.rst"
,"MANUAL.markdown"
,"CONTRIBUTORS.rst"
]
mapM_ static
["style.css"
,"sshot.png"
,"watchhours.png"
,"hledger-screen-1.png"
,"hledger-charts-2.png"
]
-- Render a page from the parent directory as if it was in the hakyll
-- root dir, setting up a symbolic link when needed.
renderParentDirPage p = do
liftIO $ system $ printf "[ -f %s ] || ln -s ../%s" p p
renderChain ["site.tmpl"] $ createPage p