tools: shake cleanup, webmanual target
This commit is contained in:
parent
099870e96a
commit
7e517a4cda
52
Shake.hs
52
Shake.hs
@ -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
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user