36 lines
1.0 KiB
Haskell
36 lines
1.0 KiB
Haskell
module Main where
|
|
|
|
import MiniDeriving.Batch
|
|
( Environment (Production, Staging)
|
|
, FailureBudget (FailureBudget)
|
|
, Priority (Background, Standard, Urgent)
|
|
, ReleaseTarget (ReleaseTarget)
|
|
, allEnvironments
|
|
, mergeBatches
|
|
, platformBatch
|
|
, renderBatch
|
|
, sortedTargets
|
|
, totalFailureBudget
|
|
, urgentFixBatch
|
|
)
|
|
import System.Exit (die)
|
|
|
|
main :: IO ()
|
|
main =
|
|
case
|
|
( allEnvironments
|
|
, sortedTargets (mergeBatches platformBatch urgentFixBatch)
|
|
, totalFailureBudget (mergeBatches platformBatch urgentFixBatch)
|
|
) of
|
|
( [Staging, Production]
|
|
, [ ReleaseTarget Staging Urgent "billing" 1
|
|
, ReleaseTarget Staging Background "worker" 1
|
|
, ReleaseTarget Production Urgent "auth" 2
|
|
, ReleaseTarget Production Standard "api" 3
|
|
]
|
|
, FailureBudget 7
|
|
) | head (lines (renderBatch (mergeBatches platformBatch urgentFixBatch)))
|
|
== "batch platform+urgent-fix across 2 environments with failure budget 7" ->
|
|
putStrLn "test passed"
|
|
_ -> die "unexpected derived behavior"
|