propellor/src/Propellor/Types/Docker.hs

32 lines
784 B
Haskell

module Propellor.Types.Docker where
import Propellor.Types.OS
import Propellor.Types.Empty
import Data.Monoid
import qualified Data.Map as M
data DockerInfo h = DockerInfo
{ _dockerRunParams :: [DockerRunParam]
, _dockerContainers :: M.Map String h
}
deriving (Show)
instance Monoid (DockerInfo h) where
mempty = DockerInfo mempty mempty
mappend old new = DockerInfo
{ _dockerRunParams = _dockerRunParams old <> _dockerRunParams new
, _dockerContainers = M.union (_dockerContainers old) (_dockerContainers new)
}
instance Empty (DockerInfo h) where
isEmpty i = and
[ isEmpty (_dockerRunParams i)
, isEmpty (_dockerContainers i)
]
newtype DockerRunParam = DockerRunParam (HostName -> String)
instance Show DockerRunParam where
show (DockerRunParam a) = a ""