diff options
author | Paul Oliver <contact@pauloliver.dev> | 2025-09-07 19:23:37 +0000 |
---|---|---|
committer | Paul Oliver <contact@pauloliver.dev> | 2025-09-07 19:49:03 +0000 |
commit | 89aab732dc3d484b99c0761728285bca6f6b1ba0 (patch) | |
tree | e2b4ca6656758dc9f398b9b1de2e6d92670b77df /hsm-log/Hsm/Log/Options.hs | |
parent | ef0713cbd90d6b84da7ea67e6dfc1fe5ab5bff86 (diff) |
Diffstat (limited to 'hsm-log/Hsm/Log/Options.hs')
-rw-r--r-- | hsm-log/Hsm/Log/Options.hs | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/hsm-log/Hsm/Log/Options.hs b/hsm-log/Hsm/Log/Options.hs index cb44f70..0e00b32 100644 --- a/hsm-log/Hsm/Log/Options.hs +++ b/hsm-log/Hsm/Log/Options.hs @@ -3,25 +3,26 @@ module Hsm.Log.Options ( makeLoggerOptionParser - ) where + ) +where -import Data.Proxy (Proxy(Proxy)) +import Data.Proxy (Proxy (Proxy)) import GHC.TypeLits (symbolVal) import Generic.Data.Function.Common.Generic.Meta (KnownSymbols, symbolVals) import Hsm.Log (LoggerOptionPrefix, Severity) import Language.Haskell.TH - ( Bang(Bang) - , Body(NormalB) - , Clause(Clause) - , Con(RecC) - , Dec(DataD, FunD, SigD) - , Exp(AppE, ConE, LitE, ParensE, UInfixE, VarE) - , Lit(StringL) + ( Bang (Bang) + , Body (NormalB) + , Clause (Clause) + , Con (RecC) + , Dec (DataD, FunD, SigD) + , Exp (AppE, ConE, LitE, ParensE, UInfixE, VarE) + , Lit (StringL) , Name , Q - , SourceStrictness(NoSourceStrictness) - , SourceUnpackedness(NoSourceUnpackedness) - , Type(AppT, ConT) + , SourceStrictness (NoSourceStrictness) + , SourceUnpackedness (NoSourceUnpackedness) + , Type (AppT, ConT) , mkName ) import Options.Applicative (Parser, auto, help, long, metavar, option, showDefault, value) @@ -36,10 +37,11 @@ import Options.Applicative (Parser, auto, help, long, metavar, option, showDefau -- $(makeLoggerOptionParser @'[ "cam", "web"] "Options" "parser" 'Info) -- -- Generates: --- * Record: `Options { logLevel_cam :: Severity, logLevel_web :: Severity }` --- * Parser: `parser :: Parser Options` with default values set to `Info` -makeLoggerOptionParser :: - forall ls. KnownSymbols ls +-- - Record: `Options { logLevel_cam :: Severity, logLevel_web :: Severity }` +-- - Parser: `parser :: Parser Options` with default values set to `Info` +makeLoggerOptionParser + :: forall ls + . KnownSymbols ls => String -> String -> Name @@ -69,4 +71,6 @@ makeLoggerOptionParser dataNameString parserNameString defaultSeverity = parserOptionValue = VarE 'value `AppE` ConE defaultSeverity parserOptionMetavar = VarE 'metavar `AppE` LitE (StringL "LEVEL") parserOptions logger = [parserOptionLong logger, parserOptionHelp logger, parserOptionShowDefault, parserOptionValue, parserOptionMetavar] - parserApply expr logger = UInfixE expr (VarE '(<*>)) $ VarE 'option `AppE` VarE 'auto `AppE` ParensE (foldl1 parserConfigApply $ parserOptions logger) + parserApply expr logger = + UInfixE expr (VarE '(<*>)) $ + VarE 'option `AppE` VarE 'auto `AppE` ParensE (foldl1 parserConfigApply $ parserOptions logger) |