{-# LANGUAGE OverloadedStrings #-} module Terraform.HttpBackend.Pass.Run where import Data.Function ((&)) import qualified Network.Wai.Handler.Warp as Warp import Options.Generic import qualified Servant.Server as Servant import qualified Terraform.HttpBackend.Pass.Api as Api import Terraform.HttpBackend.Pass.App (runAppT) import Terraform.HttpBackend.Pass.Env (Env, mkEnv) import qualified Terraform.HttpBackend.Pass.Options as Options run :: IO () run = do opts <- getRecord "Terraform HTTP Backend using Pass and Git" let env = mkEnv opts Warp.run (Options.port opts) (Servant.serve Api.api (hoistServer env)) hoistServer :: Env -> Servant.ServerT Api.Api Servant.Handler hoistServer env = Servant.hoistServer Api.api (runAppT env) Api.server