{-# LANGUAGE TemplateHaskell #-} import Data.Function ((&)) import Effectful (runEff) import Hsm.Cam (runCam) import Hsm.Core.App (bootstrapAppNoEcho) 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 = bootstrapAppNoEcho parser "Launch HsMouse Web Server" $ \opts -> runServer & runWeb & runCam & runLogsOpt @Options @Loggers opts & runEff