summaryrefslogtreecommitdiff
path: root/src/Propellor/Types/Chroot.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Propellor/Types/Chroot.hs')
-rw-r--r--src/Propellor/Types/Chroot.hs21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/Propellor/Types/Chroot.hs b/src/Propellor/Types/Chroot.hs
index da912120..b27203e5 100644
--- a/src/Propellor/Types/Chroot.hs
+++ b/src/Propellor/Types/Chroot.hs
@@ -7,6 +7,7 @@ import Propellor.Types.Empty
import Propellor.Types.Info
import Data.Monoid
+import qualified Data.Semigroup as Sem
import qualified Data.Map as M
data ChrootInfo = ChrootInfo
@@ -18,13 +19,16 @@ data ChrootInfo = ChrootInfo
instance IsInfo ChrootInfo where
propagateInfo _ = PropagateInfo False
-instance Monoid ChrootInfo where
- mempty = ChrootInfo mempty mempty
- mappend old new = ChrootInfo
+instance Sem.Semigroup ChrootInfo where
+ old <> new = ChrootInfo
{ _chroots = M.union (_chroots old) (_chroots new)
, _chrootCfg = _chrootCfg old <> _chrootCfg new
}
+instance Monoid ChrootInfo where
+ mempty = ChrootInfo mempty mempty
+ mappend = (<>)
+
instance Empty ChrootInfo where
isEmpty i = and
[ isEmpty (_chroots i)
@@ -36,12 +40,15 @@ data ChrootCfg
| SystemdNspawnCfg [(String, Bool)]
deriving (Show, Eq)
+instance Sem.Semigroup ChrootCfg where
+ v <> NoChrootCfg = v
+ NoChrootCfg <> v = v
+ SystemdNspawnCfg l1 <> SystemdNspawnCfg l2 =
+ SystemdNspawnCfg (l1 <> l2)
+
instance Monoid ChrootCfg where
mempty = NoChrootCfg
- mappend v NoChrootCfg = v
- mappend NoChrootCfg v = v
- mappend (SystemdNspawnCfg l1) (SystemdNspawnCfg l2) =
- SystemdNspawnCfg (l1 <> l2)
+ mappend = (<>)
instance Empty ChrootCfg where
isEmpty c= c == NoChrootCfg