diff --git a/Shake.hs b/Shake.hs index aa2188a58..22d1daf5d 100755 --- a/Shake.hs +++ b/Shake.hs @@ -241,16 +241,17 @@ main = do -- Generate nroff man pages suitable for man output. phony "manmanuals" $ need nroffmanuals nroffmanuals |%> \out -> do -- hledger/hledger.1 - let src = manpageNameToManualName out <.> "m4.md" - lib = "doc/common.m4" - dir = takeDirectory out - tmpl = "doc/manpage.nroff" + let src = manpageNameToManualName out <.> "m4.md" + commonm4 = "doc/common.m4" + dir = takeDirectory out + packagem4 = dir "defs.m4" + tmpl = "doc/manpage.nroff" -- assume all other m4 files in dir are included by this one XXX not true in hledger-lib deps <- liftIO $ filter (/= src) . filter (".m4.md" `isSuffixOf`) . map (dir ) <$> S.getDirectoryContents dir - need $ src : lib : tmpl : deps + need $ [src, commonm4, packagem4, tmpl] ++ deps when (dir=="hledger") $ need commandmds cmd Shell - "m4 -P -DMAN -I" dir lib src "|" + "m4 -P -DMAN -I" dir commonm4 packagem4 src "|" pandoc fromsrcmd "-s" "--template" tmpl "--lua-filter tools/pandoc-drop-html-blocks.lua" "--lua-filter tools/pandoc-drop-html-inlines.lua" @@ -268,15 +269,16 @@ main = do -- Generate Info manuals suitable for viewing with info. phony "infomanuals" $ need infomanuals infomanuals |%> \out -> do -- hledger/hledger.info - let src = out -<.> "m4.md" - lib = "doc/common.m4" - dir = takeDirectory out + let src = out -<.> "m4.md" + commonm4 = "doc/common.m4" + dir = takeDirectory out + packagem4 = dir "defs.m4" -- assume all other m4 files in dir are included by this one XXX not true in hledger-lib deps <- liftIO $ filter (/= src) . filter (".m4.md" `isSuffixOf`) . map (dir ) <$> S.getDirectoryContents dir - need $ src : lib : deps + need $ [src, commonm4, packagem4] ++ deps when (dir=="hledger") $ need commandmds cmd Shell - "m4 -P -I" dir lib src "|" + "m4 -P -I" dir commonm4 packagem4 src "|" pandoc fromsrcmd "--lua-filter tools/pandoc-drop-html-blocks.lua" "--lua-filter tools/pandoc-drop-html-inlines.lua" @@ -291,22 +293,23 @@ main = do -- and pandoc to tweak content. phony "webmanuals" $ need webmanuals webmanuals |%> \out -> do -- site/hledger.md - let manpage = manpageUriToName $ dropExtension $ takeFileName out -- hledger - manual = manpageNameToManualName manpage - dir = manpageDir manpage - src = dir manual <.> "m4.md" - lib = "doc/common.m4" - heading = let h = manual - in if "hledger_" `isPrefixOf` h - then drop 8 h ++ " format" - else h + let manpage = manpageUriToName $ dropExtension $ takeFileName out -- hledger + manual = manpageNameToManualName manpage + dir = manpageDir manpage + src = dir manual <.> "m4.md" + commonm4 = "doc/common.m4" + packagem4 = dir "defs.m4" + heading = let h = manual + in if "hledger_" `isPrefixOf` h + then drop 8 h ++ " format" + else h -- assume all other m4 files in dir are included by this one XXX not true in hledger-lib deps <- liftIO $ filter (/= src) . filter (".m4.md" `isSuffixOf`) . map (dir ) <$> S.getDirectoryContents dir - need $ src : lib : deps + need $ [src, commonm4, packagem4] ++ deps when (manual=="hledger") $ need commandmds liftIO $ writeFile out $ "# " ++ heading ++ "\n\n" cmd Shell - "m4 -P -DMAN -DWEB -I" dir lib src "|" + "m4 -P -DMAN -DWEB -I" dir commonm4 packagem4 src "|" pandoc fromsrcmd towebmd "--lua-filter tools/pandoc-demote-headers.lua" ">>" out @@ -380,10 +383,8 @@ main = do commandtxts |%> \out -> do let src = out -<.> "md" - -- lib = "doc/common.m4" need [src] cmd Shell - -- "m4 -P -DHELP -I" commandsdir lib src "|" pandoc fromsrcmd src "--lua-filter" "tools/pandoc-dedent-code-blocks.lua" "-t plain" ">" out -- CHANGELOGS diff --git a/doc/common.m4 b/doc/common.m4 index 12d257dcd..13c7f6c09 100644 --- a/doc/common.m4 +++ b/doc/common.m4 @@ -1,4 +1,5 @@ -m4_dnl Common m4 macro definitions used in hledger docs (all packages). +m4_dnl m4 macro definitions used in all hledger package docs. +m4_dnl m4 commands in Shake.hs always load this file first. m4_dnl m4_dnl "m4_dnl" causes the rest of the line to be ignored. m4_dnl @@ -8,6 +9,17 @@ m4_dnl m4_dnl _MACRO_ will be the naming convention for our macros m4_define({{_include_}}, m4_defn({{m4_include}}) )m4_dnl m4_dnl +m4_dnl These can be defined here or (with higher precedence) in PACKAGE/defs.m4: +m4_dnl +m4_dnl Author to show in man pages. +m4_define({{_author_}}, {{}})m4_dnl +m4_dnl +m4_dnl Date to show in man pages. Updated by make setdate. +m4_define({{_monthyear_}}, {{February 2019}})m4_dnl +m4_dnl +m4_dnl Program version. Updated by make setversion. +m4_define({{_version_}}, {{1.13}})m4_dnl +m4_dnl m4_dnl Macros for conditionally including format-specific content m4_dnl $1 is the manual's web slug: hledger, hledger-ui, journal, csv etc. m4_define({{_man_}}, m4_ifdef({{MAN}},{{$1}}) )m4_dnl @@ -15,11 +27,6 @@ m4_define({{_web_}}, m4_ifdef({{WEB}},{{$1}}) )m4_dnl m4_define({{_webseparate_}}, m4_ifdef({{WEB && SEPARATE}},{{$1}}) )m4_dnl m4_define({{_webcombined_}}, m4_ifdef({{WEB && COMBINED}},{{$1}}) )m4_dnl m4_dnl -m4_dnl Author/date/version macros. These are updated by make setdate, setversion etc. -m4_define({{_author_}}, {{}})m4_dnl -m4_define({{_monthyear_}}, {{February 2019}})m4_dnl -m4_define({{_version_}}, {{1.13}})m4_dnl -m4_dnl m4_dnl Links to dev and recent release versions of a manual. m4_dnl The actual links are inserted dynamically by site.js, static generation was much too painful. m4_dnl There should be a " (dev)" suffix here except when generating release docs. diff --git a/hledger-api/defs.m4 b/hledger-api/defs.m4 new file mode 100644 index 000000000..028d4ef99 --- /dev/null +++ b/hledger-api/defs.m4 @@ -0,0 +1,3 @@ +m4_dnl m4 macro definitions used in this package's docs. +m4_dnl +m4_define({{_version_}}, {{1.13}})m4_dnl diff --git a/hledger-lib/defs.m4 b/hledger-lib/defs.m4 new file mode 100644 index 000000000..49e107324 --- /dev/null +++ b/hledger-lib/defs.m4 @@ -0,0 +1,3 @@ +m4_dnl m4 macro definitions used in this package's docs. +m4_dnl +m4_define({{_version_}}, {{1.13.1}})m4_dnl diff --git a/hledger-ui/defs.m4 b/hledger-ui/defs.m4 new file mode 100644 index 000000000..028d4ef99 --- /dev/null +++ b/hledger-ui/defs.m4 @@ -0,0 +1,3 @@ +m4_dnl m4 macro definitions used in this package's docs. +m4_dnl +m4_define({{_version_}}, {{1.13}})m4_dnl diff --git a/hledger-web/defs.m4 b/hledger-web/defs.m4 new file mode 100644 index 000000000..028d4ef99 --- /dev/null +++ b/hledger-web/defs.m4 @@ -0,0 +1,3 @@ +m4_dnl m4 macro definitions used in this package's docs. +m4_dnl +m4_define({{_version_}}, {{1.13}})m4_dnl diff --git a/hledger/defs.m4 b/hledger/defs.m4 new file mode 100644 index 000000000..651e5c979 --- /dev/null +++ b/hledger/defs.m4 @@ -0,0 +1,3 @@ +m4_dnl m4 macro definitions used in this package's docs. +m4_dnl +m4_define({{_version_}}, {{1.13.2}})m4_dnl