From 775ab2fd4e35136efac701cc8a600f85ff2e9dcd Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Fri, 8 Apr 2016 07:01:11 -0700 Subject: [PATCH] site: simplify man page uris; shake cleanups --- Shake.hs | 99 ++++++++++++++++++++++++++++--------------------- site/.gitignore | 17 +++++---- site/docs.md | 16 ++++---- 3 files changed, 73 insertions(+), 59 deletions(-) diff --git a/Shake.hs b/Shake.hs index a12de6754..8672b5320 100755 --- a/Shake.hs +++ b/Shake.hs @@ -54,20 +54,6 @@ buildDir = ".build" pandoc = -- "stack exec -- pandoc" -- use the pandoc required above "pandoc" -- use pandoc in PATH (faster) -manpages = [ -- in suggested reading order - "hledger.1" - ,"hledger-ui.1" - ,"hledger-web.1" - ,"hledger-api.1" - ,"hledger_journal.5" - ,"hledger_csv.5" - ,"hledger_timelog.5" - ,"hledger_timedot.5" - ] - -manpageDir p - | '_' `elem` p = "hledger-lib" "doc" - | otherwise = dropExtension p "doc" main = do @@ -103,6 +89,32 @@ main = do ] -- man pages + + let + manpageNames = [ -- in suggested reading order + "hledger.1" + ,"hledger-ui.1" + ,"hledger-web.1" + ,"hledger-api.1" + ,"hledger_journal.5" + ,"hledger_csv.5" + ,"hledger_timelog.5" + ,"hledger_timedot.5" + ] + + -- hledger.1 -> hledger, hledger_journal.5 -> journal + manpageNameToUri m | "hledger_" `isPrefixOf` m = dropExtension $ drop 8 m + | otherwise = dropExtension m + + -- hledger -> hledger.1, journal -> hledger_journal.5 + manpageUriToName u | "hledger" `isPrefixOf` u = u <.> "1" + | otherwise = "hledger_" ++ u <.> "5" + + -- hledger.1 -> hledger/doc, hledger_journal.5 -> hledger-lib/doc + manpageDir m + | '_' `elem` m = "hledger-lib" "doc" + | otherwise = dropExtension m "doc" + -- method 1: -- pandoc filters, these adjust master md files for web or man output @@ -112,10 +124,10 @@ main = do cmd ("stack ghc") out -- man pages adjusted for man and converted to nroff, by pandoc - let manpageNroffs = [manpageDir p p | p <- manpages] - phony "manpages" $ need manpageNroffs - manpageNroffs |%> \out -> do - let md = out <.> "md" + let manpages = [manpageDir m m | m <- manpageNames] -- hledger/doc/hledger.1, hledger-lib/doc/hledger_journal.5 + phony "manpages" $ need manpages + manpages |%> \out -> do + let md = out <.> "md" -- hledger/doc/hledger.1.md tmpl = "doc/manpage.nroff" need $ md : tmpl : pandocFilters cmd pandoc md "-s --template" tmpl @@ -127,11 +139,11 @@ main = do "-o" out -- man pages adjusted for web by pandoc (ready for hakyll) - let webManpageMds = ["site" p <.>".md" | p <- manpages] - phony "webmanpages" $ need webManpageMds - webManpageMds |%> \out -> do - let p = dropExtension $ takeFileName out - md = manpageDir p p <.> "md" + let webmanpages = ["site" manpageNameToUri m <.>".md" | m <- manpageNames] -- site/hledger.md, site/journal.md + phony "webmanpages" $ need webmanpages + webmanpages |%> \out -> do + let m = manpageUriToName $ dropExtension $ takeFileName out -- hledger.1 + md = manpageDir m m <.> "md" -- hledger/doc/hledger.1.md need $ md : pandocFilters cmd pandoc md "--filter doc/pandoc-demote-headers" @@ -142,9 +154,9 @@ main = do -- method 2: -- man pages assembled from parts and adjusted for man with m4, adjusted more and converted to nroff with pandoc - let m4manpageNroffs = [manpageDir p "m4-"++p | p <- ["hledger.1"]] - phony "m4manpages" $ need m4manpageNroffs - m4manpageNroffs |%> \out -> do -- hledger/doc/m4-hledger.1 + let m4manpages = [manpageDir m "m4-"++m | m <- ["hledger.1"]] -- hledger/doc/m4-hledger.1 + phony "m4manpages" $ need m4manpages + m4manpages |%> \out -> do -- hledger/doc/m4-hledger.1 let (dir,file) = splitFileName out -- hledger/doc, m4-hledger.1 m4src = dir drop 3 file <.> "md" <.> "m4" -- hledger/doc/hledger.1.md.m4 m4includes = map (dir ) ["description.md","examples.md","queries.md","commands.md","options.md"] @@ -160,13 +172,13 @@ main = do "-o" out -- man pages assembled from parts and adjusted for web with m4, adjusted slightly more with pandoc (ready for hakyll) - let m4webManpageMds = ["site" "m4-"++p <.>".md" | p <- ["hledger.1"]] - phony "m4webmanpages" $ need $ m4webManpageMds - m4webManpageMds |%> \out -> do -- site/m4-hledger.1.md - let file = takeFileName out -- m4-hledger.1.md - manpage = drop 3 $ dropExtension file -- hledger.1 - dir = manpageDir manpage -- hledger/doc - m4src = dir manpage <.> "md" <.> "m4" -- hledger/doc/hledger.1.md.m4 + let m4webmanpages = ["site" "m4-" ++ manpageNameToUri m <.> ".md" | m <- ["hledger.1"]] -- site/m4-hledger.md + phony "m4webmanpages" $ need $ m4webmanpages + m4webmanpages |%> \out -> do -- site/m4-hledger.md + let file = takeFileName out -- m4-hledger.1.md + manpage = manpageUriToName $ drop 3 $ dropExtension file -- hledger.1 + dir = manpageDir manpage -- hledger/doc + m4src = dir manpage <.> "md" <.> "m4" -- hledger/doc/hledger.1.md.m4 m4includes = map (dir ) ["description.md","examples.md","queries.md","commands.md","options.md"] m4lib = "doc/lib.m4" need $ m4src : m4lib : m4includes @@ -181,7 +193,7 @@ main = do let webmanual = "site/manual2.md" phony "webmanual" $ need [ webmanual ] "site/manual2.md" %> \out -> do - need webManpageMds + need webmanpages liftIO $ writeFile webmanual [i|