tools: shake cleanup, webmanual target

This commit is contained in:
Simon Michael 2016-04-05 15:40:59 -07:00
parent 099870e96a
commit 7e517a4cda

View File

@ -20,7 +20,6 @@ Requires: https://www.haskell.org/downloads#stack
Shake notes: Shake notes:
notes: notes:
unclear: unclear:
want
oracles oracles
wishlist: wishlist:
wildcards in phony rules wildcards in phony rules
@ -53,7 +52,6 @@ Commands:
webmanual webmanual
|] |]
manpages :: [String]
manpages = [ manpages = [
"hledger_csv.5" "hledger_csv.5"
,"hledger_journal.5" ,"hledger_journal.5"
@ -65,21 +63,16 @@ manpages = [
,"hledger-web.1" ,"hledger-web.1"
] ]
manpageDir :: String -> FilePath
manpageDir p manpageDir p
| '_' `elem` p = "hledger-lib" | '_' `elem` p = "hledger-lib"
| otherwise = dropExtension p | otherwise = dropExtension p
buildDir :: FilePath
buildDir = ".build" buildDir = ".build"
pandocExe :: String
pandocExe = "stack exec -- pandoc" -- use the pandoc required above pandocExe = "stack exec -- pandoc" -- use the pandoc required above
pandocFiltersResolver :: String
pandocFiltersResolver = "" pandocFiltersResolver = ""
main :: IO ()
main = do main = do
pandocFilters <- pandocFilters <-
@ -106,17 +99,16 @@ main = do
-- docs -- docs
-- man pages, still markdown but with man-only sections removed.
-- (We let hakyll do the html rendering since it's good
-- at applying the site style, table of contents etc.)
let manpageFilteredMds = ["site" </> p <.>".md" | p <- manpages]
-- man pages, converted to man nroff with web-only sections removed -- man pages, converted to man nroff with web-only sections removed
let manpageNroffs = [manpageDir p </> p | p <- manpages] let manpageNroffsForMan = [manpageDir p </> p | p <- manpages]
phony "manpages" $ need $ manpageNroffs ++ manpageFilteredMds -- man pages, still markdown but with man-only sections removed
-- (we let hakyll do the final markdown rendering)
let manpageMdsForHakyll = ["site" </> p <.>".md" | p <- manpages]
manpageNroffs |%> \out -> do phony "manpages" $ need manpageNroffsForMan
manpageNroffsForMan |%> \out -> do
let let
md = out <.> "md" md = out <.> "md"
tmpl = "doc/manpage.nroff" tmpl = "doc/manpage.nroff"
@ -129,44 +121,32 @@ main = do
"--filter tools/pandocCapitalizeHeaders" "--filter tools/pandocCapitalizeHeaders"
"-o" out "-o" out
manpageFilteredMds |%> \out -> do phony "webmanual" $ need manpageMdsForHakyll
manpageMdsForHakyll |%> \out -> do
let let
p = dropExtension $ takeFileName out p = dropExtension $ takeFileName out
md = manpageDir p </> p <.> "md" md = manpageDir p </> p <.> "md"
tmpl = "doc/manpage.html" tmpl = "doc/manpage.html"
need $ md : tmpl : pandocFilters need $ md : tmpl : pandocFilters
cmd pandocExe md "--to markdown" cmd pandocExe md "--to markdown"
-- XXX assume this is compiled
"--filter tools/pandocRemoveManonlyBlocks" "--filter tools/pandocRemoveManonlyBlocks"
"-o" out "-o" out
phony "pandocfilters" $ need pandocFilters
pandocFilters |%> \out -> do pandocFilters |%> \out -> do
need [out <.> "hs"] need [out <.> "hs"]
cmd ("stack "++pandocFiltersResolver++" ghc") out cmd ("stack "++pandocFiltersResolver++" ghc") out
-- cleanup
phony "clean" $ do phony "clean" $ do
putNormal "Cleaning generated files" putNormal "Cleaning generated files"
removeFilesAfter "" manpageNroffs removeFilesAfter "" manpageNroffsForMan
removeFilesAfter "" manpageFilteredMds removeFilesAfter "" manpageMdsForHakyll
putNormal "Cleaning object files" putNormal "Cleaning object files"
removeFilesAfter "tools" ["*.o","*.p_o","*.hi"] removeFilesAfter "tools" ["*.o","*.p_o","*.hi"]
putNormal "Cleaning shake build files" putNormal "Cleaning shake build files"
removeFilesAfter buildDir ["//*"] removeFilesAfter buildDir ["//*"]
-- manpageHtmls |%> \out -> do
-- let
-- p = dropExtension $ takeFileName out
-- md = manpageDir p </> p <.> "md"
-- tmpl = "doc/manpage.html"
-- need [md, tmpl]
-- cmd pandocExe md "--to html --filter tools/pandocRemoveManpageBlocks.hs --template" tmpl "-o" out
-- "site/manual2.html" %> \out -> do
-- need ["site/manual2.md"]
-- cmd pandocExe "site/manual2.md -o" out
-- "_build//*.o" %> \out -> do
-- let c = dropDirectory1 $ out -<.> "c"
-- let m = out -<.> "m"
-- () <- cmd "gcc -c" [c] "-o" [out] "-MMD -MF" [m]
-- needMakefileDependencies m