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: | ||||
| notes: | ||||
|  unclear: | ||||
|   want | ||||
|   oracles | ||||
|  wishlist: | ||||
|   wildcards in phony rules | ||||
| @ -53,7 +52,6 @@ Commands: | ||||
|  webmanual | ||||
| |] | ||||
| 
 | ||||
| manpages :: [String] | ||||
| manpages = [ | ||||
|    "hledger_csv.5" | ||||
|   ,"hledger_journal.5" | ||||
| @ -65,21 +63,16 @@ manpages = [ | ||||
|   ,"hledger-web.1" | ||||
|   ] | ||||
| 
 | ||||
| manpageDir :: String -> FilePath | ||||
| manpageDir p | ||||
|   | '_' `elem` p = "hledger-lib" | ||||
|   | otherwise    = dropExtension p | ||||
| 
 | ||||
| buildDir :: FilePath | ||||
| buildDir = ".build" | ||||
| 
 | ||||
| pandocExe :: String | ||||
| pandocExe = "stack exec -- pandoc" -- use the pandoc required above | ||||
| 
 | ||||
| pandocFiltersResolver :: String | ||||
| pandocFiltersResolver = "" | ||||
| 
 | ||||
| main :: IO () | ||||
| main = do | ||||
| 
 | ||||
|   pandocFilters <- | ||||
| @ -106,17 +99,16 @@ main = do | ||||
| 
 | ||||
|     -- 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 | ||||
|     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 | ||||
|         md = out <.> "md" | ||||
|         tmpl = "doc/manpage.nroff" | ||||
| @ -129,44 +121,32 @@ main = do | ||||
|         "--filter tools/pandocCapitalizeHeaders" | ||||
|         "-o" out | ||||
| 
 | ||||
|     manpageFilteredMds |%> \out -> do | ||||
|     phony "webmanual" $ need manpageMdsForHakyll | ||||
| 
 | ||||
|     manpageMdsForHakyll |%> \out -> do | ||||
|       let | ||||
|         p = dropExtension $ takeFileName out | ||||
|         md = manpageDir p </> p <.> "md" | ||||
|         tmpl = "doc/manpage.html" | ||||
|       need $ md : tmpl : pandocFilters | ||||
|       cmd pandocExe md "--to markdown" | ||||
|         -- XXX assume this is compiled | ||||
|         "--filter tools/pandocRemoveManonlyBlocks" | ||||
|         "-o" out | ||||
| 
 | ||||
|     phony "pandocfilters" $ need pandocFilters | ||||
| 
 | ||||
|     pandocFilters |%> \out -> do | ||||
|       need [out <.> "hs"] | ||||
|       cmd ("stack "++pandocFiltersResolver++" ghc") out | ||||
| 
 | ||||
|     -- cleanup | ||||
| 
 | ||||
|     phony "clean" $ do | ||||
|       putNormal "Cleaning generated files" | ||||
|       removeFilesAfter "" manpageNroffs | ||||
|       removeFilesAfter "" manpageFilteredMds | ||||
|       removeFilesAfter "" manpageNroffsForMan | ||||
|       removeFilesAfter "" manpageMdsForHakyll | ||||
|       putNormal "Cleaning object files" | ||||
|       removeFilesAfter "tools" ["*.o","*.p_o","*.hi"] | ||||
|       putNormal "Cleaning shake build files" | ||||
|       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