Revision cefd4a4a htools/Ganeti/Block/Drbd/Parser.hs

b/htools/Ganeti/Block/Drbd/Parser.hs
31 31
import qualified Data.Attoparsec.Text as A
32 32
import qualified Data.Attoparsec.Combinator as AC
33 33
import Data.Attoparsec.Text (Parser)
34
import Data.Maybe
34 35
import Data.Text (Text, unpack)
35 36

  
36 37
import Ganeti.Block.Drbd.Types
......
68 69

  
69 70
-- | The parser for the version information lines.
70 71
versionInfoParser :: Parser VersionInfo
71
versionInfoParser =
72
  VersionInfo
73
    <$> optional versionP
74
    <*> optional apiP
75
    <*> optional protoP
76
    <*> optional srcVersion
77
    <*> (fmap unpack <$> optional gh)
78
    <*> (fmap unpack <$> optional builder)
72
versionInfoParser = do
73
  versionF <- optional versionP
74
  apiF <- optional apiP
75
  protoF <- optional protoP
76
  srcVersionF <- optional srcVersion
77
  ghF <- fmap unpack <$> optional gh
78
  builderF <- fmap unpack <$> optional builder
79
  if   isNothing versionF
80
    && isNothing apiF
81
    && isNothing protoF
82
    && isNothing srcVersionF
83
    && isNothing ghF
84
    && isNothing builderF
85
    then fail "versionInfo"
86
    else pure $ VersionInfo versionF apiF protoF srcVersionF ghF builderF
87

  
79 88
    where versionP =
80 89
            A.string "version:"
81 90
            *> skipSpaces

Also available in: Unified diff