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)