38 lines
1.1 KiB
Haskell
Raw Normal View History

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"