mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-10 05:39:31 +03:00
cli: Replace embedStringFile with embedFile (compile with LC_ALL=C)
This commit is contained in:
parent
f108b56e61
commit
1190e2ae5d
@ -22,6 +22,8 @@ module Hledger.Cli.DocFiles (
|
||||
|
||||
import Prelude ()
|
||||
import "base-compat-batteries" Prelude.Compat
|
||||
import Data.ByteString (ByteString)
|
||||
import qualified Data.ByteString.Char8 as BC
|
||||
import Data.FileEmbed
|
||||
import Data.String
|
||||
import System.IO
|
||||
@ -32,82 +34,82 @@ import Hledger.Utils (first3, second3, third3)
|
||||
|
||||
type Topic = String
|
||||
|
||||
docFiles :: IsString a => [(Topic, (a, a, a))]
|
||||
docFiles :: [(Topic, (ByteString, ByteString, ByteString))]
|
||||
docFiles = [
|
||||
("hledger",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger.1" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger.txt" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger.info" >>= embedStringFile)
|
||||
($(makeRelativeToProject "embeddedfiles/hledger.1" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger.info" >>= embedFile)
|
||||
))
|
||||
,("hledger-ui",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger-ui.1" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-ui.txt" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-ui.info" >>= embedStringFile)
|
||||
($(makeRelativeToProject "embeddedfiles/hledger-ui.1" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-ui.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-ui.info" >>= embedFile)
|
||||
))
|
||||
,("hledger-web",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger-web.1" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-web.txt" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-web.info" >>= embedStringFile)
|
||||
($(makeRelativeToProject "embeddedfiles/hledger-web.1" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-web.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-web.info" >>= embedFile)
|
||||
))
|
||||
,("hledger-api",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger-api.1" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-api.txt" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-api.info" >>= embedStringFile)
|
||||
($(makeRelativeToProject "embeddedfiles/hledger-api.1" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-api.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-api.info" >>= embedFile)
|
||||
))
|
||||
,("journal",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger_journal.5" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_journal.txt" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_journal.info" >>= embedStringFile)
|
||||
($(makeRelativeToProject "embeddedfiles/hledger_journal.5" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_journal.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_journal.info" >>= embedFile)
|
||||
))
|
||||
,("csv",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger_csv.5" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_csv.txt" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_csv.info" >>= embedStringFile)
|
||||
($(makeRelativeToProject "embeddedfiles/hledger_csv.5" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_csv.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_csv.info" >>= embedFile)
|
||||
))
|
||||
,("timeclock",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger_timeclock.5" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_timeclock.txt" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_timeclock.info" >>= embedStringFile)
|
||||
($(makeRelativeToProject "embeddedfiles/hledger_timeclock.5" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_timeclock.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_timeclock.info" >>= embedFile)
|
||||
))
|
||||
,("timedot",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger_timedot.5" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_timedot.txt" >>= embedStringFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_timedot.info" >>= embedStringFile)
|
||||
($(makeRelativeToProject "embeddedfiles/hledger_timedot.5" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_timedot.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_timedot.info" >>= embedFile)
|
||||
))
|
||||
]
|
||||
|
||||
docTopics :: [Topic]
|
||||
docTopics = map fst docFiles
|
||||
|
||||
lookupDocTxt :: IsString a => Topic -> a
|
||||
lookupDocTxt :: Topic -> ByteString
|
||||
lookupDocTxt name =
|
||||
maybe (fromString $ "No text manual found for topic: "++name) second3 $ lookup name docFiles
|
||||
|
||||
lookupDocNroff :: IsString a => Topic -> a
|
||||
lookupDocNroff :: Topic -> ByteString
|
||||
lookupDocNroff name =
|
||||
maybe (fromString $ "No man page found for topic: "++name) first3 $ lookup name docFiles
|
||||
|
||||
lookupDocInfo :: IsString a => Topic -> a
|
||||
lookupDocInfo :: Topic -> ByteString
|
||||
lookupDocInfo name =
|
||||
maybe (fromString $ "No info manual found for topic: "++name) third3 $ lookup name docFiles
|
||||
|
||||
printHelpForTopic :: Topic -> IO ()
|
||||
printHelpForTopic t =
|
||||
putStrLn $ lookupDocTxt t
|
||||
BC.putStr (lookupDocTxt t)
|
||||
|
||||
runPagerForTopic :: FilePath -> Topic -> IO ()
|
||||
runPagerForTopic exe t = do
|
||||
(Just inp, _, _, ph) <- createProcess (proc exe []){
|
||||
std_in=CreatePipe
|
||||
}
|
||||
hPutStrLn inp (lookupDocTxt t)
|
||||
BC.hPutStrLn inp (lookupDocTxt t)
|
||||
_ <- waitForProcess ph
|
||||
return ()
|
||||
|
||||
runManForTopic :: Topic -> IO ()
|
||||
runManForTopic t =
|
||||
withSystemTempFile ("hledger-"++t++".nroff") $ \f h -> do
|
||||
hPutStrLn h $ lookupDocNroff t
|
||||
BC.hPutStrLn h $ lookupDocNroff t
|
||||
hClose h
|
||||
-- the temp file path will presumably have a slash in it, so man should read it
|
||||
callCommand $ "man " ++ f
|
||||
@ -115,7 +117,7 @@ runManForTopic t =
|
||||
runInfoForTopic :: Topic -> IO ()
|
||||
runInfoForTopic t =
|
||||
withSystemTempFile ("hledger-"++t++".info") $ \f h -> do
|
||||
hPutStrLn h $ lookupDocInfo t
|
||||
BC.hPutStrLn h $ lookupDocInfo t
|
||||
hClose h
|
||||
callCommand $ "info " ++ f
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user