38 lines
1.1 KiB
Haskell
38 lines
1.1 KiB
Haskell
|
|
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"
|