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