From 864ac0a7c16f227f1f1f3e5c30ea7f544e04f451 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 7 Oct 2013 17:11:13 -0400 Subject: add schedule to vicfg --- Types/ScheduledActivity.hs | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'Types/ScheduledActivity.hs') diff --git a/Types/ScheduledActivity.hs b/Types/ScheduledActivity.hs index e2b8d088a..7e76cadfe 100644 --- a/Types/ScheduledActivity.hs +++ b/Types/ScheduledActivity.hs @@ -14,18 +14,25 @@ import Types.UUID data ScheduledActivity = ScheduledSelfFsck Schedule | ScheduledRemoteFsck UUID Schedule + deriving (Eq, Show, Ord) fromScheduledActivity :: ScheduledActivity -> String fromScheduledActivity (ScheduledSelfFsck s) = - "fsck self at " ++ fromSchedule s + "fsck self " ++ fromSchedule s fromScheduledActivity (ScheduledRemoteFsck u s) = - "fsck " ++ fromUUID u ++ " at " ++ fromSchedule s + "fsck " ++ fromUUID u ++ fromSchedule s toScheduledActivity :: String -> Maybe ScheduledActivity -toScheduledActivity s = case words s of - ("fsck":"self":rest) -> ScheduledSelfFsck - <$> toSchedule (unwords rest) - ("fsck":u:rest) -> ScheduledRemoteFsck +toScheduledActivity = eitherToMaybe . parseScheduledActivity + +parseScheduledActivity :: String -> Either String ScheduledActivity +parseScheduledActivity s = case words s of + ("fsck":"self":rest) -> qualified $ ScheduledSelfFsck + <$> parseSchedule (unwords rest) + ("fsck":u:rest) -> qualified $ ScheduledRemoteFsck <$> pure (toUUID u) - <*> toSchedule (unwords rest) - _ -> Nothing + <*> parseSchedule (unwords rest) + _ -> qualified $ Left "unknown activity" + where + qualified (Left e) = Left $ e ++ " in \"" ++ s ++ "\"" + qualified v = v -- cgit v1.2.3