packages feed

super-user-spark-0.2.0.1: src/Dispatch.hs

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