From cd217ecf5bc7a04c9d594876f753916a098bf3b7 Mon Sep 17 00:00:00 2001 From: Paul Oliver Date: Wed, 3 Sep 2025 21:14:13 +0000 Subject: Adds CLI parser generator for multiple logger severity settings --- hsm-web/Main.hs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'hsm-web/Main.hs') diff --git a/hsm-web/Main.hs b/hsm-web/Main.hs index 9eef1e7..d1a9da3 100644 --- a/hsm-web/Main.hs +++ b/hsm-web/Main.hs @@ -1,7 +1,20 @@ +{-# LANGUAGE TemplateHaskell #-} + import Effectful (runEff) import Hsm.Cam (runCam) -import Hsm.Log (Severity(Info), runLogs) +import Hsm.Log (Severity(Info), runLogsOpt) +import Hsm.Log.Options (makeLoggerOptionParser) import Hsm.Web (runServer, runWeb) +-- Import full module for cleaner `-ddump-splices` output +-- Avoids package/module qualifiers in generated code +import Options.Applicative + +type Loggers = '[ "cam", "libcamera", "scotty", "web"] + +$(makeLoggerOptionParser @Loggers "Options" "parser" 'Info) + main :: IO () -main = runEff . runLogs @'[ "cam", "libcamera", "scotty", "web"] Info . runCam . runWeb $ runServer +main = do + opt <- execParser . info (parser <**> helper) $ fullDesc <> progDesc "Launch HsMouse Web Server" + runEff . runLogsOpt @Options @Loggers opt . runCam . runWeb $ runServer -- cgit v1.2.1