module Dispatch (dispatch) where
import Check
import Compiler
import Compiler.Types
import Control.Monad (void)
import Deployer
import Deployer.Types
import Dispatch.Types
import Formatter
import Parser
import Seed
import Types
dispatch :: Dispatch -> Sparker ()
dispatch (DispatchParse fp) = do
void $ parseFile fp
dispatch (DispatchFormat fp) = do
sf <- parseFile fp
str <- formatSparkFile sf
liftIO $ putStrLn str
dispatch (DispatchCompile cfr) = do
deployments <- compileJob cfr
outputCompiled deployments
dispatch (DispatchCheck dcr) = do
deps <- compileDeployerCardRef dcr
seeded <- seedByCompiledCardRef dcr deps
dcrs <- liftIO $ check seeded
liftIO $ putStrLn $ formatDeploymentChecks $ zip seeded dcrs
dispatch (DispatchDeploy dcr) = do
deps <- compileDeployerCardRef dcr
seeded <- seedByCompiledCardRef dcr deps
dcrs <- liftIO $ check seeded
deploy $ zip seeded dcrs
compileDeployerCardRef :: DeployerCardReference -> Sparker [Deployment]
compileDeployerCardRef (DeployerCardCompiled fp) = inputCompiled fp
compileDeployerCardRef (DeployerCardUncompiled cfr) = compileJob cfr