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