doc: make hledger manuals show up in Info's directory
This continues the work begun by #1585. It moves each info manual's directory metadata to the top of the file, where it needs to be. I couldn't see a way to do this with pandoc/makeinfo, so the Shake recipe prepends it from a separate file. With this metadata in place, the hledger info manuals can be added to an Info dir file using install-info. Eg: $ install-info hledger/hledger.info /usr/local/share/info/dir $ info Secondly, the Shake "manuals"/"infomanuals" recipes now also generate an Info dir file in each package directory, so you can also just add the package directories to your INFOPATH. Eg: $ export INFOPATH=~/src/hledger/hledger:~/src/hledger/hledger-ui:~/src/hledger/hledger-web:$INFOPATH $ info
This commit is contained in:
parent
a9dd54d7b4
commit
1c9a7f1bc4
36
Shake.hs
36
Shake.hs
@ -25,6 +25,9 @@ Some of the commands below require additional command-line tools, including:
|
|||||||
- makeinfo
|
- makeinfo
|
||||||
- pandoc
|
- pandoc
|
||||||
- sed
|
- sed
|
||||||
|
- mv
|
||||||
|
- cat
|
||||||
|
- rm
|
||||||
|
|
||||||
Some things that may be useful when working on this:
|
Some things that may be useful when working on this:
|
||||||
- https://docs.haskellstack.org/en/stable/GUIDE/#script-interpreter
|
- https://docs.haskellstack.org/en/stable/GUIDE/#script-interpreter
|
||||||
@ -218,6 +221,11 @@ main = do
|
|||||||
|
|
||||||
-- manuals as info, ready for info (hledger/hledger.info)
|
-- manuals as info, ready for info (hledger/hledger.info)
|
||||||
infomanuals = [manualDir m </> m <.> "info" | m <- manualNames]
|
infomanuals = [manualDir m </> m <.> "info" | m <- manualNames]
|
||||||
|
-- an Info directory entry for each info manual (hledger/dir-entry.info)
|
||||||
|
infodirentries = [manualDir m </> "dir-entry.info" | m <- manualNames]
|
||||||
|
-- an Info directory for each hledger package with info manuals, so hledger manuals
|
||||||
|
-- will appear in Info's directory after adding the package directories to INFOPATH.
|
||||||
|
infodirs = [manualDir m </> "dir" | m <- manualNames]
|
||||||
|
|
||||||
-- manuals as sphinx-ready markdown, to be rendered as part of the website (hledger/hledger.md)
|
-- manuals as sphinx-ready markdown, to be rendered as part of the website (hledger/hledger.md)
|
||||||
webmanuals = [manualDir m </> m <.> "md" | m <- manualNames]
|
webmanuals = [manualDir m </> m <.> "md" | m <- manualNames]
|
||||||
@ -395,7 +403,7 @@ main = do
|
|||||||
]
|
]
|
||||||
when commit $ do
|
when commit $ do
|
||||||
let msg = ";update manuals"
|
let msg = ";update manuals"
|
||||||
cmd Shell gitcommit ("-m '"++msg++"' --") packagemandatem4s nroffmanuals infomanuals txtmanuals
|
cmd Shell gitcommit ("-m '"++msg++"' --") packagemandatem4s nroffmanuals infomanuals infodirentries txtmanuals
|
||||||
|
|
||||||
-- Update the dates to show in man pages, to the current month and year.
|
-- Update the dates to show in man pages, to the current month and year.
|
||||||
-- Currently must be run manually when needed.
|
-- Currently must be run manually when needed.
|
||||||
@ -448,7 +456,8 @@ main = do
|
|||||||
cmd Shell "tbl" src "| eqn -Tascii | troff -Wall -mandoc -Tascii | grotty -cbuo >" out
|
cmd Shell "tbl" src "| eqn -Tascii | troff -Wall -mandoc -Tascii | grotty -cbuo >" out
|
||||||
|
|
||||||
-- Generate Info manuals suitable for viewing with info, from the .m4.md source.
|
-- Generate Info manuals suitable for viewing with info, from the .m4.md source.
|
||||||
phony "infomanuals" $ need infomanuals
|
phony "infomanuals" $ need $ infomanuals ++ infodirs
|
||||||
|
|
||||||
infomanuals |%> \out -> do -- hledger/hledger.info
|
infomanuals |%> \out -> do -- hledger/hledger.info
|
||||||
let src = out -<.> "m4.md"
|
let src = out -<.> "m4.md"
|
||||||
commonm4 = "doc/common.m4"
|
commonm4 = "doc/common.m4"
|
||||||
@ -456,11 +465,13 @@ main = do
|
|||||||
dir = takeDirectory out
|
dir = takeDirectory out
|
||||||
packagemanversionm4 = dir </> ".version.m4"
|
packagemanversionm4 = dir </> ".version.m4"
|
||||||
packagemandatem4 = dir </> ".date.m4"
|
packagemandatem4 = dir </> ".date.m4"
|
||||||
|
infodirentry = dir </> "dir-entry.info"
|
||||||
|
infodir = dir </> "dir"
|
||||||
-- assume any other .m4.md files in dir are included by this one XXX not true in hledger-lib
|
-- assume any other .m4.md files in dir are included by this one XXX not true in hledger-lib
|
||||||
subfiles <- liftIO $ filter (/= src) . filter (".m4.md" `isSuffixOf`) . map (dir </>) <$> S.getDirectoryContents dir
|
subfiles <- liftIO $ filter (/= src) . filter (".m4.md" `isSuffixOf`) . map (dir </>) <$> S.getDirectoryContents dir
|
||||||
need $ [src, commonm4, commandsm4, packagemanversionm4, packagemandatem4] ++ subfiles
|
need $ [src, commonm4, commandsm4, packagemanversionm4, packagemandatem4, infodirentry] ++ subfiles
|
||||||
when (dir=="hledger") $ need commandmds
|
when (dir=="hledger") $ need commandmds
|
||||||
cmd Shell
|
cmd_ Shell
|
||||||
m4 "-DINFOFORMAT -I" dir commonm4 commandsm4 packagemanversionm4 packagemandatem4 src "|"
|
m4 "-DINFOFORMAT -I" dir commonm4 commandsm4 packagemanversionm4 packagemandatem4 src "|"
|
||||||
-- sed "-e 's/^#(#+)/\\1/'" "|"
|
-- sed "-e 's/^#(#+)/\\1/'" "|"
|
||||||
pandoc fromsrcmd
|
pandoc fromsrcmd
|
||||||
@ -472,6 +483,23 @@ main = do
|
|||||||
-- "-s"
|
-- "-s"
|
||||||
"-t texinfo |"
|
"-t texinfo |"
|
||||||
makeinfo "-o" out
|
makeinfo "-o" out
|
||||||
|
-- The Info dir entry must appear before the first node;
|
||||||
|
-- not sure how better to accomplish this. Awkward. (#1585)
|
||||||
|
let tmp = out <.> "tmp"
|
||||||
|
cmd_ Shell "mv" out tmp
|
||||||
|
cmd_ Shell "cat" infodirentry tmp ">" out
|
||||||
|
cmd_ Shell "rm -f" tmp
|
||||||
|
|
||||||
|
-- Generate an Info dir file for each info manual, so that they will appear
|
||||||
|
-- in Info's directory (table of contents) if these (filesystem) directories
|
||||||
|
-- are added to INFOPATH.
|
||||||
|
infodirs |%> \out -> do -- hledger/dir
|
||||||
|
let dir = takeDirectory out
|
||||||
|
infomanual = dir </> dir <.> "info"
|
||||||
|
infodir = dir </> "dir"
|
||||||
|
need [infomanual]
|
||||||
|
cmd_ Shell "rm -f" out
|
||||||
|
cmd Shell "install-info" infomanual infodir
|
||||||
|
|
||||||
|
|
||||||
-- WEBSITE MARKDOWN SOURCE
|
-- WEBSITE MARKDOWN SOURCE
|
||||||
|
|||||||
4
hledger-ui/dir-entry.info
Normal file
4
hledger-ui/dir-entry.info
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
INFO-DIR-SECTION User Applications
|
||||||
|
START-INFO-DIR-ENTRY
|
||||||
|
* hledger-ui: (hledger-ui). Terminal UI for the hledger accounting tool.
|
||||||
|
END-INFO-DIR-ENTRY
|
||||||
4
hledger-web/dir-entry.info
Normal file
4
hledger-web/dir-entry.info
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
INFO-DIR-SECTION User Applications
|
||||||
|
START-INFO-DIR-ENTRY
|
||||||
|
* hledger-web: (hledger-web). Web UI/API for the hledger accounting tool.
|
||||||
|
END-INFO-DIR-ENTRY
|
||||||
4
hledger/dir-entry.info
Normal file
4
hledger/dir-entry.info
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
INFO-DIR-SECTION User Applications
|
||||||
|
START-INFO-DIR-ENTRY
|
||||||
|
* hledger: (hledger). Command-line plain text accounting tool.
|
||||||
|
END-INFO-DIR-ENTRY
|
||||||
Loading…
Reference in New Issue
Block a user