aboutsummaryrefslogtreecommitdiff
path: root/hsm-web/Main.hs
blob: d1a9da36aeb53a00a6ed9d7f70ef94b0c607ee40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{-# LANGUAGE TemplateHaskell #-}

import Effectful (runEff)
import Hsm.Cam (runCam)
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 = do
  opt <- execParser . info (parser <**> helper) $ fullDesc <> progDesc "Launch HsMouse Web Server"
  runEff . runLogsOpt @Options @Loggers opt . runCam . runWeb $ runServer