@@ -1,7 +1,7 @@
1{-# LANGUAGE RecordWildCards #-}
1{-# LANGUAGE RecordWildCards #-}
2import Data.Set (fromList)
2import Data.Set (fromList)
3import Stackage.Build (build, defaultBuildSettings)
3import Stackage.Build (build, defaultBuildSettings)
4−import Stackage.BuildPlan (readBuildPlan, writeBuildPlan)
4+import Stackage.BuildPlan (readBuildPlan, writeBuildPlan, writeBuildPlanCsv)
5import Stackage.CheckPlan (checkPlan)
5import Stackage.CheckPlan (checkPlan)
6import Stackage.GhcPkg (getGhcVersion)
6import Stackage.GhcPkg (getGhcVersion)
7import Stackage.Init (stackageInit)
7import Stackage.Init (stackageInit)
@@ -20,6 +20,7 @@ data SelectArgs = SelectArgs
20 , onlyPermissive :: Bool
20 , onlyPermissive :: Bool
21 , allowed :: [String]
21 , allowed :: [String]
22 , buildPlanDest :: FilePath
22 , buildPlanDest :: FilePath
23+ , buildPlanCsvDest :: FilePath
23 , globalDB :: Bool
24 , globalDB :: Bool
@@ -32,6 +33,7 @@ parseSelectArgs =
32 , onlyPermissive = False
33 , onlyPermissive = False
33 , allowed = []
34 , allowed = []
34 , buildPlanDest = defaultBuildPlan
35 , buildPlanDest = defaultBuildPlan
36+ , buildPlanCsvDest = defaultBuildPlanCsv
35 , globalDB = False
37 , globalDB = False
@@ -43,6 +45,7 @@ parseSelectArgs =
43 loop x ("--only-permissive":rest) = loop x { onlyPermissive = True } rest
45 loop x ("--only-permissive":rest) = loop x { onlyPermissive = True } rest
44 loop x ("--allow":y:rest) = loop x { allowed = y : allowed x } rest
46 loop x ("--allow":y:rest) = loop x { allowed = y : allowed x } rest
45 loop x ("--build-plan":y:rest) = loop x { buildPlanDest = y } rest
47 loop x ("--build-plan":y:rest) = loop x { buildPlanDest = y } rest
48+ loop x ("--build-plan-csv":y:rest) = loop x { buildPlanCsvDest = y } rest
46 loop x ("--use-global-db":rest) = loop x { globalDB = True } rest
49 loop x ("--use-global-db":rest) = loop x { globalDB = True } rest
47 loop _ (y:_) = error $ "Did not understand argument: " ++ y
50 loop _ (y:_) = error $ "Did not understand argument: " ++ y
@@ -78,6 +81,9 @@ parseBuildArgs version =
78defaultBuildPlan :: FilePath
81defaultBuildPlan :: FilePath
79defaultBuildPlan = "build-plan.txt"
82defaultBuildPlan = "build-plan.txt"
84+defaultBuildPlanCsv :: FilePath
85+defaultBuildPlanCsv = "build-plan.csv"
81withBuildSettings :: [String] -> (BuildSettings -> BuildPlan -> IO a) -> IO a
87withBuildSettings :: [String] -> (BuildSettings -> BuildPlan -> IO a) -> IO a
82withBuildSettings args f = do
88withBuildSettings args f = do
83 version <- getGhcVersion
89 version <- getGhcVersion
@@ -114,6 +120,7 @@ main = do
114 , useGlobalDatabase = globalDB
120 , useGlobalDatabase = globalDB
116 writeBuildPlan buildPlanDest bp
122 writeBuildPlan buildPlanDest bp
123+ writeBuildPlanCsv buildPlanCsvDest bp
117 ("check":rest) -> withBuildSettings rest checkPlan
124 ("check":rest) -> withBuildSettings rest checkPlan
118 ("build":rest) -> withBuildSettings rest build
125 ("build":rest) -> withBuildSettings rest build
119 ("test":rest) -> withBuildSettings rest runTestSuites
126 ("test":rest) -> withBuildSettings rest runTestSuites