redirect installation
This commit is contained in:
parent
1c4a4bc54a
commit
1a24212ec4
34
site.hs
34
site.hs
|
@ -142,20 +142,37 @@ installPage mount pi
|
||||||
makeDirectories file
|
makeDirectories file
|
||||||
TIO.writeFile file . Mu.substitute templ $ pi ^. pageMeta
|
TIO.writeFile file . Mu.substitute templ $ pi ^. pageMeta
|
||||||
|
|
||||||
|
{- | Install a simple redirect handler page. -}
|
||||||
|
installRedirect :: FilePath -> FilePath -> Site ()
|
||||||
|
installRedirect target from = do
|
||||||
|
tname <- use redirectTemplate
|
||||||
|
templ <- use $ templates . to (M.! fromString tname)
|
||||||
|
file <- indexFilename from
|
||||||
|
checkRender file
|
||||||
|
io $ do
|
||||||
|
putStrLn $ "@@@ " ++ file ++ " -> " ++ target
|
||||||
|
makeDirectories file
|
||||||
|
TIO.writeFile file . Mu.substitute templ $
|
||||||
|
Y.object [("target", Y.String $ T.pack target)]
|
||||||
|
|
||||||
|
-- | Install all redirects required by one page.
|
||||||
|
installPageRedirects :: FilePath -> PageInfo -> Site ()
|
||||||
|
installPageRedirects target pi = do
|
||||||
|
traverse_
|
||||||
|
(installRedirect target . T.unpack)
|
||||||
|
(pi ^.. pageMeta . key "redirects" . values . _String)
|
||||||
|
|
||||||
|
-- | Install all redirects required by all pages.
|
||||||
|
installRedirects :: Site ()
|
||||||
|
installRedirects =
|
||||||
|
use pages >>= traverse_ (uncurry installPageRedirects) . M.assocs
|
||||||
|
|
||||||
{- | Install a file. Files are installed into a single shared location. That
|
{- | Install a file. Files are installed into a single shared location. That
|
||||||
- prevents file duplication and also gives a bit of control for where the
|
- prevents file duplication and also gives a bit of control for where the
|
||||||
- files reside and what are their names. -}
|
- files reside and what are their names. -}
|
||||||
installFile :: FilePath -> Site FilePath
|
installFile :: FilePath -> Site FilePath
|
||||||
installFile = undefined
|
installFile = undefined
|
||||||
|
|
||||||
{- | Install a simple redirect handler page. -}
|
|
||||||
installRedirect :: FilePath -> FilePath -> Site ()
|
|
||||||
installRedirect = undefined
|
|
||||||
|
|
||||||
-- | Install all redirects required by pages.
|
|
||||||
installRedirects :: Site ()
|
|
||||||
installRedirects = undefined
|
|
||||||
|
|
||||||
-- | Render a site for a given tag string.
|
-- | Render a site for a given tag string.
|
||||||
renderTag :: [String] -> Site ()
|
renderTag :: [String] -> Site ()
|
||||||
renderTag = undefined
|
renderTag = undefined
|
||||||
|
@ -169,5 +186,6 @@ main =
|
||||||
flip runStateT emptySiteState $ do
|
flip runStateT emptySiteState $ do
|
||||||
traverse sourcePages ["external"]
|
traverse sourcePages ["external"]
|
||||||
sourceTemplates "templates"
|
sourceTemplates "templates"
|
||||||
|
installRedirects
|
||||||
use pages >>= traverse (uncurry installPage) . M.assocs
|
use pages >>= traverse (uncurry installPage) . M.assocs
|
||||||
get >>= io . print
|
get >>= io . print
|
||||||
|
|
Loading…
Reference in a new issue