module Deployer.Types where import Language.Types import Monad import System.FilePath.Posix (takeExtension) import Types data DeployerCardReference = DeployerCardCompiled FilePath | DeployerCardUncompiled CardFileReference deriving (Show, Eq) instance Read DeployerCardReference where readsPrec _ fp = case length (words fp) of 0 -> [] 1 -> if takeExtension fp == ".sus" then [(DeployerCardUncompiled (CardFileReference fp Nothing) ,"")] else [(DeployerCardCompiled fp, "")] 2 -> let [f, c] = words fp in [(DeployerCardUncompiled (CardFileReference f (Just $ CardNameReference c)), "")] _ -> [] type SparkDeployer = StateT DeployerState Sparker data DeployerState = DeployerState data PreDeployment = Ready FilePath FilePath DeploymentKind | AlreadyDone | Error String deriving (Show, Eq) data ID = Plain String | Var String deriving (Show, Eq)