summaryrefslogtreecommitdiff
path: root/Propellor/Property
diff options
context:
space:
mode:
authorJoey Hess2014-04-18 04:48:49 -0400
committerJoey Hess2014-04-18 04:48:49 -0400
commit5f6c3ad56490a8c3063f8daa1cd8b0a302b63ddd (patch)
treea05856a744c7ce6a6be69db327e5b8afec013257 /Propellor/Property
parent4e4fb9ab7ca13f5148c6d4b08f53f518429530a8 (diff)
All Property combinators now combine together their Attr settings.
So Attr settings can be made inside a propertyList, for example.
Diffstat (limited to 'Propellor/Property')
-rw-r--r--Propellor/Property/Apt.hs4
-rw-r--r--Propellor/Property/Cmd.hs1
-rw-r--r--Propellor/Property/Scheduled.hs4
3 files changed, 5 insertions, 4 deletions
diff --git a/Propellor/Property/Apt.hs b/Propellor/Property/Apt.hs
index 2115dc50..9234cbbf 100644
--- a/Propellor/Property/Apt.hs
+++ b/Propellor/Property/Apt.hs
@@ -157,8 +157,8 @@ buildDepIn dir = go `requires` installedMin ["devscripts", "equivs"]
-- | Package installation may fail becuse the archive has changed.
-- Run an update in that case and retry.
robustly :: Property -> Property
-robustly p = property (propertyDesc p) $ do
- r <- ensureProperty p
+robustly p = adjustProperty p $ \satisfy -> do
+ r <- satisfy
if r == FailedChange
then ensureProperty $ p `requires` update
else return r
diff --git a/Propellor/Property/Cmd.hs b/Propellor/Property/Cmd.hs
index 5b7494ee..bcd08246 100644
--- a/Propellor/Property/Cmd.hs
+++ b/Propellor/Property/Cmd.hs
@@ -12,6 +12,7 @@ import Data.List
import "mtl" Control.Monad.Reader
import Propellor.Types
+import Propellor.Property
import Utility.Monad
import Utility.SafeCommand
import Utility.Env
diff --git a/Propellor/Property/Scheduled.hs b/Propellor/Property/Scheduled.hs
index 0e639129..f2911e50 100644
--- a/Propellor/Property/Scheduled.hs
+++ b/Propellor/Property/Scheduled.hs
@@ -19,13 +19,13 @@ import qualified Data.Map as M
-- This uses the description of the Property to keep track of when it was
-- last run.
period :: Property -> Recurrance -> Property
-period prop recurrance = property desc $ do
+period prop recurrance = flip describe desc $ adjustProperty prop $ \satisfy -> do
lasttime <- liftIO $ getLastChecked (propertyDesc prop)
nexttime <- liftIO $ fmap startTime <$> nextTime schedule lasttime
t <- liftIO localNow
if Just t >= nexttime
then do
- r <- ensureProperty prop
+ r <- satisfy
liftIO $ setLastChecked t (propertyDesc prop)
return r
else noChange