diff options
| author | Joey Hess <joeyh@joeyh.name> | 2016-06-13 19:25:01 -0400 |
|---|---|---|
| committer | Joey Hess <joeyh@joeyh.name> | 2016-06-13 19:25:01 -0400 |
| commit | 3893a43774eee2a01df19c15c6c59c6f6d358c29 (patch) | |
| tree | 439c5fa8f4a6d4bb92349947d7a71ecf30d6c301 | |
| parent | cc9f62f8d67753b65705b9ab8396092477e083f1 (diff) | |
fix buggy readVersionMaybe
| -rw-r--r-- | doc/todo/merge_request:_changes_to_Reboot.hs/comment_2_736788cdf9afc98da3dfd5a120e7978b._comment | 11 | ||||
| -rw-r--r-- | src/Propellor/Property/Reboot.hs | 9 |
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 |
