{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} module Main (main) where import Control.Lens.Operators import Data.Version (Version, showVersion) import Paths_servant_polysemy as Paths import Polysemy import Polysemy.Error import Servant import Servant.Polysemy.Server type MyApi = "api" :> "v1" :> "version" :> Get '[JSON] Version myServer :: Member (Embed IO) r => ServerT MyApi (Sem (Error ServerError ': r)) myServer = do embed $ putStrLn $ "Returning version " <> showVersion Paths.version pure Paths.version main :: IO () main = runWarpServer @MyApi 8080 True myServer & runM