{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE ViewPatterns #-} {-# LANGUAGE NoImplicitPrelude #-} import Relude hiding (get) import Yesod import Yesod.Auth import Datarekisteri.Frontend.Types import Datarekisteri.Frontend.Handlers import Datarekisteri.Frontend.Auth () import Yesod.Static (static, Static) import Options.Applicative import System.Directory (createDirectoryIfMissing) mkYesodDispatch "DataIdClient" resourcesDataIdClient main :: IO () main = do config <- readConfig static <- getStaticDir "/tmp/data-id" warp (configPort config) $ DataIdClient static config readConfig :: IO Config readConfig = execParser $ info (configOpts' <**> helper) (fullDesc <> progDesc "Serve datarekisteri HTTP client" <> header "Client HTTP server for datarekisteri") configOpts' :: Parser Config configOpts' = Config <$> option auto (long "port" <> short 'p' <> metavar "PORT" <> value 3000 <> help "Port to listen on") <*> strOption (long "approot" <> short 'r' <> metavar "URL" <> value "http://localhost:3000" <> help "External URL of the server path /") <*> strOption (long "server-url" <> short 's' <> metavar "URL" <> value "http://localhost:3100" <> help "Internal URL of the API server") -- TODO make port depend on the --port flag getStaticDir :: FilePath -> IO Static getStaticDir dir = createDirectoryIfMissing True dir >> static dir