module Main where import MiniSummary.Report ( Count (Count) , DeploymentSummary (..) , LargestReplicas (LargestReplicas) , parseEvent , renderSummary , summarizeEvents ) import qualified Data.Set as Set import System.Exit (die) main :: IO () main = case traverse parseEvent [ "api:production:succeeded:3:platform,security" , "worker:staging:failed-db-lock:1:ops" , "ui:production:cancelled:2:frontend" ] of Left err -> die err Right events -> case summarizeEvents events of DeploymentSummary { totalDeployments = Count 3 , productionDeployments = Count 2 , totalReplicas = Count 6 , failedServices = failedServicesSet , activeOwners = ownerSet , largestReplicaCount = LargestReplicas 3 } | failedServicesSet == Set.fromList ["worker"] && ownerSet == Set.fromList ["frontend", "ops", "platform", "security"] && "cancelled seen: yes" `elem` lines (renderSummary (summarizeEvents events)) -> putStrLn "test passed" _ -> die "unexpected foldMap summary result"