module Check.Types where import CoreTypes import Data.Digest.Pure.MD5 (MD5Digest) type HashDigest = MD5Digest data Diagnostics = Nonexistent | IsFile | IsDirectory | IsLinkTo FilePath | IsWeird deriving (Show, Eq) data DiagnosedFp = D { diagnosedFilePath :: FilePath , diagnosedDiagnostics :: Diagnostics , diagnosedHashDigest :: HashDigest } deriving (Show, Eq) data Instruction = Instruction FilePath FilePath DeploymentKind deriving (Show, Eq) data CleanupInstruction = CleanFile FilePath | CleanDirectory FilePath | CleanLink FilePath deriving (Show, Eq) data DeploymentCheckResult = DeploymentDone -- ^ Done already | ReadyToDeploy Instruction -- ^ Immediately possible | DirtySituation String Instruction CleanupInstruction -- ^ Possible after cleanup of destination | ImpossibleDeployment [String] -- ^ Entirely impossible deriving (Show, Eq) data CheckResult = AlreadyDone -- ^ Done already | Ready Instruction -- ^ Immediately possible | Dirty String Instruction CleanupInstruction -- ^ Possible after cleanup | Impossible String -- ^ Entirely impossible deriving (Show, Eq) data DiagnosedDeployment = Diagnosed { diagnosedSrcs :: [DiagnosedFp] , diagnosedDst :: DiagnosedFp , diagnosedKind :: DeploymentKind } deriving (Show, Eq)