diff options
author | Joey Hess <joey@kitenet.net> | 2013-10-08 17:44:20 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-10-08 17:44:20 -0400 |
commit | 1f9d51686923f7e8add63e53fad4950fdd43a46b (patch) | |
tree | 743932035dbc85cda13f0e1da64f6716456508f5 /Types | |
parent | 62ba14fe517bab8a14a05ff1be14fc148947fc10 (diff) |
remove duration from Schedule
Diffstat (limited to 'Types')
-rw-r--r-- | Types/ScheduledActivity.hs | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/Types/ScheduledActivity.hs b/Types/ScheduledActivity.hs index dc37fe173..e29050d8e 100644 --- a/Types/ScheduledActivity.hs +++ b/Types/ScheduledActivity.hs @@ -9,30 +9,42 @@ module Types.ScheduledActivity where import Common import Utility.Scheduled +import Utility.HumanTime import Types.UUID data ScheduledActivity - = ScheduledSelfFsck Schedule - | ScheduledRemoteFsck UUID Schedule + = ScheduledSelfFsck Schedule Duration + | ScheduledRemoteFsck UUID Schedule Duration deriving (Eq, Read, Show, Ord) +getSchedule :: ScheduledActivity -> Schedule +getSchedule (ScheduledSelfFsck s _) = s +getSchedule (ScheduledRemoteFsck _ s _) = s + +getDuration :: ScheduledActivity -> Duration +getDuration (ScheduledSelfFsck _ d) = d +getDuration (ScheduledRemoteFsck _ _ d) = d + fromScheduledActivity :: ScheduledActivity -> String -fromScheduledActivity (ScheduledSelfFsck s) = - "fsck self " ++ fromSchedule s -fromScheduledActivity (ScheduledRemoteFsck u s) = - "fsck " ++ fromUUID u ++ fromSchedule s +fromScheduledActivity (ScheduledSelfFsck s d) = unwords + [ "fsck self", fromDuration d, fromSchedule s ] +fromScheduledActivity (ScheduledRemoteFsck u s d) = unwords + [ "fsck", fromUUID u, fromDuration d, fromSchedule s ] toScheduledActivity :: String -> Maybe ScheduledActivity toScheduledActivity = eitherToMaybe . parseScheduledActivity parseScheduledActivity :: String -> Either String ScheduledActivity parseScheduledActivity s = case words s of - ("fsck":"self":rest) -> qualified $ ScheduledSelfFsck + ("fsck":"self":d:rest) -> qualified $ ScheduledSelfFsck <$> parseSchedule (unwords rest) - ("fsck":u:rest) -> qualified $ ScheduledRemoteFsck + <*> getduration d + ("fsck":u:d:rest) -> qualified $ ScheduledRemoteFsck <$> pure (toUUID u) <*> parseSchedule (unwords rest) + <*> getduration d _ -> qualified $ Left "unknown activity" where qualified (Left e) = Left $ e ++ " in \"" ++ s ++ "\"" qualified v = v + getduration d = maybe (Left $ "failed to parse duration \""++d++"\"") Right (parseDuration d) |