@@ -11,6 +11,7 @@ import qualified Data.Set as Set
11import Distribution.Text (display, simpleParse)
11import Distribution.Text (display, simpleParse)
12import Stackage.Types
12import Stackage.Types
13import qualified System.IO.UTF8
13import qualified System.IO.UTF8
14+import Data.Char (isSpace)
15readBuildPlan :: FilePath -> IO BuildPlan
16readBuildPlan :: FilePath -> IO BuildPlan
16readBuildPlan fp = do
17readBuildPlan fp = do
@@ -31,7 +32,7 @@ instance AsString BuildPlan where
31 toString BuildPlan {..} = concat
32 toString BuildPlan {..} = concat
32 [ makeSection "tools" bpTools
33 [ makeSection "tools" bpTools
33 , makeSection "packages" $ Map.toList bpPackages
34 , makeSection "packages" $ Map.toList bpPackages
34− , makeSection "core" $ Set.toList bpCore
35+ , makeSection "core" $ Map.toList bpCore
35 , makeSection "optional-core" $ Map.toList bpOptionalCore
36 , makeSection "optional-core" $ Map.toList bpOptionalCore
36 , makeSection "skipped-tests" $ Set.toList bpSkippedTests
37 , makeSection "skipped-tests" $ Set.toList bpSkippedTests
@@ -44,7 +45,7 @@ instance AsString BuildPlan where
44 let bp = BuildPlan
45 let bp = BuildPlan
45 { bpTools = tools
46 { bpTools = tools
46 , bpPackages = Map.fromList packages
47 , bpPackages = Map.fromList packages
47− , bpCore = Set.fromList core
48+ , bpCore = Map.fromList core
48 , bpOptionalCore = Map.fromList optionalCore
49 , bpOptionalCore = Map.fromList optionalCore
49 , bpSkippedTests = Set.fromList skipped
50 , bpSkippedTests = Set.fromList skipped
@@ -64,6 +65,15 @@ instance AsString PackageName where
64 toString (PackageName pn) = pn
65 toString (PackageName pn) = pn
65 fromString s = Right (PackageName s, "")
66 fromString s = Right (PackageName s, "")
68+instance AsString (Maybe Version) where
69+ toString Nothing = ""
70+ toString (Just x) = toString x
72+ | all isSpace s = return (Nothing, s)
74+ (v, s') <- fromString s
67instance AsString a => AsString (PackageName, a) where
77instance AsString a => AsString (PackageName, a) where
68 toString (PackageName pn, s) = concat [pn, " ", toString s]
78 toString (PackageName pn, s) = concat [pn, " ", toString s]
69 fromString s = do
79 fromString s = do