summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/todo/merge_request:_changes_to_Reboot.hs/comment_2_736788cdf9afc98da3dfd5a120e7978b._comment11
-rw-r--r--src/Propellor/Property/Reboot.hs9
2 files changed, 16 insertions, 4 deletions
diff --git a/doc/todo/merge_request:_changes_to_Reboot.hs/comment_2_736788cdf9afc98da3dfd5a120e7978b._comment b/doc/todo/merge_request:_changes_to_Reboot.hs/comment_2_736788cdf9afc98da3dfd5a120e7978b._comment
new file mode 100644
index 00000000..fa1048a3
--- /dev/null
+++ b/doc/todo/merge_request:_changes_to_Reboot.hs/comment_2_736788cdf9afc98da3dfd5a120e7978b._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 2"""
+ date="2016-06-13T23:13:28Z"
+ content="""
+readVersionMaybe was buggy; for "4.1.2" it yielded
+`Just (Version {versionBranch = [4], versionTags = []})`
+which is lacking anything but the major.
+
+I fixed it by taking the maximum of the list of all possible parses.
+"""]]
diff --git a/src/Propellor/Property/Reboot.hs b/src/Propellor/Property/Reboot.hs
index 161f2aee..6a0626a2 100644
--- a/src/Propellor/Property/Reboot.hs
+++ b/src/Propellor/Property/Reboot.hs
@@ -3,6 +3,7 @@ module Propellor.Property.Reboot (
atEnd,
toDistroKernel,
toKernelNewerThan,
+ KernelVersion,
) where
import Propellor.Base
@@ -11,6 +12,7 @@ import Data.List
import Data.Version
import Text.ParserCombinators.ReadP
+-- | Kernel version number, in a string.
type KernelVersion = String
-- | Using this property causes an immediate reboot.
@@ -129,11 +131,10 @@ extractKernelVersion :: String -> KernelVersion
extractKernelVersion =
unwords . take 1 . drop 1 . dropWhile (/= "version") . words
--- adapted from Utility.PartialPrelude.readish
readVersionMaybe :: KernelVersion -> Maybe Version
-readVersionMaybe ver = case readP_to_S parseVersion ver of
- ((x,_):_) -> Just x
- _ -> Nothing
+readVersionMaybe ver = case map fst $ readP_to_S parseVersion ver of
+ [] -> Nothing
+ l -> Just $ maximum l
tryReadVersion :: KernelVersion -> Propellor Version
tryReadVersion ver = case readVersionMaybe ver of