packages feed

compaREST-0.1.0.0: src/Data/OpenApi/Compare/Run.hs

module Data.OpenApi.Compare.Run
  ( runChecker,
    runReport,
    module Data.OpenApi.Compare.Report,
  )
where

import Data.HList
import Data.OpenApi (OpenApi)
import Data.OpenApi.Compare.Paths
import Data.OpenApi.Compare.Report
import Data.OpenApi.Compare.Subtree
import Data.OpenApi.Compare.Validate.OpenApi ()
import Text.Pandoc.Builder

runChecker :: (OpenApi, OpenApi) -> CheckerOutput
runChecker (client, server) =
  CheckerOutput
    { forwardChanges = run client server
    , backwardChanges = run server client
    }
  where
    toPC p c =
      ProdCons
        { producer = traced (step ClientSchema) p
        , consumer = traced (step ServerSchema) c
        }
    run p c = either id mempty . runCompatFormula . checkCompatibility Root HNil $ toPC p c

runReport :: ReportConfig -> (OpenApi, OpenApi) -> (Blocks, ReportStatus)
runReport cfg = generateReport cfg . segregateIssues . runChecker