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