harg-0.4.2.0: src/Options/Harg/Pretty.hs
module Options.Harg.Pretty
( ppHelp
, ppSourceRunErrors
) where
import Control.Applicative ((<|>))
import Data.List (intercalate)
import Data.Maybe (fromMaybe)
import Options.Harg.Sources.Types
import Options.Harg.Types
ppHelp
:: Opt a
-> Maybe String
ppHelp Opt{..}
= (<> ppEnvVar _optEnvVar) <$> _optHelp
ppSourceRunErrors
:: [SourceRunError]
-> String
ppSourceRunErrors
= intercalate "\n\n"
. map ppSourceRunError
where
ppSourceRunError :: SourceRunError -> String
ppSourceRunError (SourceRunError Nothing src desc)
= "error: "
<> desc
<> "\n\t"
<> ppSource src
ppSourceRunError (SourceRunError (Just (SomeOpt opt)) src desc)
= "option "
<> optId opt
<> ": "
<> desc
<> "\n\t"
<> ppSource src
<> ppEnvVar (_optEnvVar opt)
optId Opt{..}
= fromMaybe "<no name available>"
$ _optLong <|> (pure <$> _optShort) <|> _optMetavar
ppSource
:: String
-> String
ppSource s
= " (source: " <> s <> ")"
ppEnvVar
:: Maybe String
-> String
ppEnvVar
= maybe "" $ \s -> " (env var: " <> s <> ")"