diff options
| author | Sean Whitton <spwhitton@spwhitton.name> | 2016-06-12 12:02:47 +0900 |
|---|---|---|
| committer | Sean Whitton <spwhitton@spwhitton.name> | 2016-06-12 12:02:47 +0900 |
| commit | e782cdfc64f9c3491f5f81101bd4e5e3de761eb8 (patch) | |
| tree | cc7af6467eef3fce72d503ba8a220f36dd1aef26 | |
| parent | 5a671a0841a8557e569f82748eb1eabb01b6c42e (diff) | |
bring IO code into propellor monad
| -rw-r--r-- | src/Propellor/Property/Reboot.hs | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/src/Propellor/Property/Reboot.hs b/src/Propellor/Property/Reboot.hs index 2d4319d9..aa762629 100644 --- a/src/Propellor/Property/Reboot.hs +++ b/src/Propellor/Property/Reboot.hs @@ -14,7 +14,6 @@ import Data.Version import Text.ParserCombinators.ReadP type KernelVersion = String -data KernelAvailable = Running | Installed | Unavailable now :: Property Linux now = tightenTargets $ cmdProperty "reboot" [] @@ -65,21 +64,15 @@ toDistroKernel = check (not <$> runningInstalledKernel) now toKernelNewerThan :: KernelVersion -> Property DebianLike toKernelNewerThan ver = property' ("reboot to kernel newer than " ++ ver) $ \w -> do - available <- liftIO $ newerKernelAvailable (readVersion ver) - case available of - Running -> noChange - Installed -> ensureProperty w now - Unavailable -> return FailedChange - -newerKernelAvailable :: Version -> IO KernelAvailable -newerKernelAvailable wantV = do - runningV <- readVersion <$> runningKernelVersion - installedV <- maximum . map readVersion <$> installedKernelVersions - if runningV >= wantV - then return Running - else if installedV >= wantV && runningV < wantV - then return Installed - else return Unavailable + let wantV = readVersion ver + runningV <- readVersion <$> liftIO runningKernelVersion + installedV <- maximum . map readVersion <$> + liftIO installedKernelVersions + if runningV >= wantV then noChange + else if installedV >= wantV && runningV < wantV + then ensureProperty w now + else error "newer kernel not installed" + >> return FailedChange runningInstalledKernel :: IO Bool runningInstalledKernel = do |
