harg-0.2.0.0: src/Options/Harg/Pretty.hs
module Options.Harg.Pretty where
import Data.List (intercalate, nubBy)
import Data.Maybe (fromMaybe)
import Options.Harg.Types
ppHelp
:: Opt a
-> Maybe String
ppHelp Opt{..}
= (<> ppEnvVar _optEnvVar) <$> _optHelp
ppOptErrors
:: [OptError]
-> String
ppOptErrors
= intercalate "\n\n"
. map ppOptError
. nubBy cmpOptErr
where
cmpOptErr (OptError (SomeOpt l) sl dl) (OptError (SomeOpt r) sr dr)
= _optLong l == _optLong r && sl == sr && dl == dr
ppOptError :: OptError -> String
ppOptError (OptError (SomeOpt opt) src desc)
= "option "
<> fromMaybe "<no opt name>" (_optLong opt)
<> ": "
<> desc
<> "\n\t"
<> ppSource src
<> ppEnvVar (_optEnvVar opt)
ppSource
:: Maybe String
-> String
ppSource
= maybe "" $ \s -> " (source: " <> s <> ")"
ppEnvVar
:: Maybe String
-> String
ppEnvVar
= maybe "" $ \s -> " (env var: " <> s <> ")"