diff options
Diffstat (limited to 'src/Propellor/Container.hs')
| -rw-r--r-- | src/Propellor/Container.hs | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/Propellor/Container.hs b/src/Propellor/Container.hs index 26194456..b64f5949 100644 --- a/src/Propellor/Container.hs +++ b/src/Propellor/Container.hs @@ -51,15 +51,30 @@ propagateContainer ) => String -> c + -> (PropagateInfo -> Bool) -> Property metatypes -> Property metatypes -propagateContainer containername c prop = prop +propagateContainer containername c wanted prop = prop `addChildren` map convert (containerProperties c) where convert p = let n = property (getDesc p) (getSatisfy p) :: Property UnixLike n' = n `setInfoProperty` mapInfo (forceHostContext containername) - (propagatableInfo (getInfo p)) + (propagatableInfo wanted (getInfo p)) `addChildren` map convert (getChildren p) in toChildProperty n' + +-- | Filters out parts of the Info that should not propagate out of a +-- container. +propagatableInfo :: (PropagateInfo -> Bool) -> Info -> Info +propagatableInfo wanted (Info l) = Info $ + filter (\(InfoEntry a) -> wanted (propagateInfo a)) l + +normalContainerInfo :: PropagateInfo -> Bool +normalContainerInfo PropagatePrivData = True +normalContainerInfo (PropagateInfo b) = b + +onlyPrivData :: PropagateInfo -> Bool +onlyPrivData PropagatePrivData = True +onlyPrivData (PropagateInfo _) = False |
