module Main where import MiniMonadChain.Rollout ( ApprovedRollout (ApprovedRollout) , Environment (Production, Staging) , ReleaseTrack (Candidate, Stable) , RolloutRequest (RolloutRequest) , approveRollout , catalog , parseRequest , renderRollout ) import System.Exit (die) main :: IO () main = case ( parseRequest "api:production:stable:CHG-2048" , parseRequest "worker:production:candidate:CHG-3000" , parseRequest "auth:production:candidate:CHG-4000" ) of ( Right apiRequest , Right workerRequest , Right authRequest ) -> case ( approveRollout catalog apiRequest , approveRollout catalog workerRequest , approveRollout catalog authRequest ) of ( Right rollout@(ApprovedRollout "api" Production "2026.05.1" "CHG-2048" "platform") , Left _ , Left _ ) | renderRollout rollout == "api -> production, tag 2026.05.1, ticket CHG-2048, approver platform" -> putStrLn "test passed" _ -> die "unexpected monad chain result" _ -> die "unexpected request parse result"