packages feed

terraform-http-backend-pass-0.1.0.0: src/Terraform/HttpBackend/Pass/Run.hs

{-# 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