module Dispatch where import Compiler import Deployer import Formatter import Parser import Types dispatch :: Dispatch -> Sparker () dispatch (DispatchParse fp) = parseFile fp >> return () -- Just parse, throw away the results. dispatch (DispatchFormat fp) = do cards <- parseFile fp str <- formatCards cards liftIO $ putStrLn str dispatch (DispatchCompile (CardFileReference fp mcnr)) = do cards <- parseFile fp deployments <- compileRef cards mcnr outputCompiled deployments dispatch (DispatchCheck ccr) = do deps <- case ccr of DeployerCardCompiled fp -> inputCompiled fp DeployerCardUncompiled (CardFileReference fp mcnr) -> do cards <- parseFile fp compileRef cards mcnr pdps <- check deps liftIO $ putStr $ formatPreDeployments $ zip deps pdps dispatch (DispatchDeploy dcr) = do deps <- case dcr of DeployerCardCompiled fp -> inputCompiled fp DeployerCardUncompiled scr -> do cards <- parseCardFileReference scr compile (head cards) cards -- filtering is already done at parse deploy deps