- Just ((thing, version) : mapping)
-
-getThingVersionMap :: State BuildInfo ThingVersionMap
-getThingVersionMap = do st <- get
- return $ biThingVersionMap st
-
-getWays :: State BuildInfo Ways
-getWays = do st <- get
- return $ biWays st
-
-putThingVersionMap :: ThingVersionMap -> State BuildInfo ()
-putThingVersionMap tm = do st <- get
- put $ st { biThingVersionMap = tm }
-
-putWays :: Ways -> State BuildInfo ()
-putWays ws = do st <- get
- put $ st { biWays = ws }
+ Just ((thing, str) : mapping)
+
+getMaybeWays :: BIMonad (Maybe Ways)
+getMaybeWays = do st <- get
+ return $ biMaybeWays st
+
+haveThingVersion :: String -> String -> BIMonad ()
+haveThingVersion thing thingVersion
+ = do st <- get
+ case addThingMap (biThingVersionMap st) thing thingVersion of
+ Nothing -> fail "Inconsistent version"
+ Just tvm -> put $ st { biThingVersionMap = tvm }
+
+haveThingHash :: String -> String -> BIMonad ()
+haveThingHash thing thingHash
+ = do st <- get
+ case addThingMap (biThingHashMap st) thing thingHash of
+ Nothing -> fail "Inconsistent hash"
+ Just thm -> put $ st { biThingHashMap = thm }