Skip to content

Commit a80c654

Browse files
committed
refactor(cabal-install): use LogProgress in InstallPlan
1 parent f79eb9b commit a80c654

File tree

15 files changed

+194
-143
lines changed

15 files changed

+194
-143
lines changed

Cabal/src/Distribution/Utils/LogProgress.hs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ module Distribution.Utils.LogProgress
99
, infoProgress
1010
, dieProgress
1111
, addProgressCtx
12+
, eitherToLogProgress
1213
) where
1314

1415
import Distribution.Compat.Prelude
@@ -99,3 +100,7 @@ formatMsg ctx doc = doc $$ vcat ctx
99100
addProgressCtx :: CtxMsg -> LogProgress a -> LogProgress a
100101
addProgressCtx s (LogProgress m) = LogProgress $ \env ->
101102
m env{le_context = s : le_context env}
103+
104+
eitherToLogProgress :: Either Doc a -> LogProgress a
105+
eitherToLogProgress (Left err) = dieProgress err
106+
eitherToLogProgress (Right a) = return a

cabal-install/src/Distribution/Client/CmdBench.hs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ import Distribution.Simple.Utils
5050
, warn
5151
, wrapText
5252
)
53+
import Distribution.Utils.LogProgress
54+
( runLogProgress
55+
)
5356
import Distribution.Verbosity
5457
( normal
5558
)
@@ -133,11 +136,12 @@ benchAction flags targetStrings globalFlags = do
133136
Nothing
134137
targetSelectors
135138

136-
let elaboratedPlan' =
139+
elaboratedPlan' <- runLogProgress verbosity $
137140
pruneInstallPlanToTargets
138141
TargetActionBench
139142
targets
140143
elaboratedPlan
144+
141145
return (elaboratedPlan', targets)
142146

143147
printPlan verbosity baseCtx buildCtx

cabal-install/src/Distribution/Client/CmdBuild.hs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{-# LANGUAGE LambdaCase #-}
12
-- | cabal-install CLI command: build
23
module Distribution.Client.CmdBuild
34
( -- * The @build@ CLI and action
@@ -55,6 +56,8 @@ import Distribution.Simple.Utils
5556
import Distribution.Verbosity
5657
( normal
5758
)
59+
import Distribution.Utils.LogProgress (runLogProgress)
60+
import qualified Distribution.Client.InstallPlan as InstallPlan
5861

5962
buildCommand :: CommandUI (NixStyleFlags BuildFlags)
6063
buildCommand =
@@ -161,18 +164,20 @@ buildAction flags@NixStyleFlags{extraFlags = buildFlags} targetStrings globalFla
161164
Nothing
162165
targetSelectors
163166

164-
let elaboratedPlan' =
165-
pruneInstallPlanToTargets
166-
targetAction
167-
targets
168-
elaboratedPlan
167+
elaboratedPlan' <- runLogProgress verbosity $
168+
pruneInstallPlanToTargets
169+
targetAction
170+
targets
171+
elaboratedPlan
172+
169173
elaboratedPlan'' <-
170174
if buildSettingOnlyDeps (buildSettings baseCtx)
171175
then
172-
either (reportCannotPruneDependencies verbosity) return $
173-
pruneInstallPlanToDependencies
174-
(Map.keysSet targets)
175-
elaboratedPlan'
176+
case pruneInstallPlanToDependencies (Map.keysSet targets) elaboratedPlan' of
177+
Left err ->
178+
reportCannotPruneDependencies verbosity err
179+
Right elaboratedPlan'' ->
180+
runLogProgress verbosity $ InstallPlan.new' elaboratedPlan''
176181
else return elaboratedPlan'
177182

178183
return (elaboratedPlan'', targets)

cabal-install/src/Distribution/Client/CmdGenBounds.hs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import Control.Monad (mapM_)
1818
import Distribution.Client.Errors
1919

2020
import Distribution.Client.ProjectPlanning hiding (pruneInstallPlanToTargets)
21-
import Distribution.Client.ProjectPlanning.Types
2221
import Distribution.Client.Types.ConfiguredId (confInstId)
2322
import Distribution.Client.Utils hiding (pvpize)
2423
import Distribution.InstalledPackageInfo (InstalledPackageInfo, installedComponentId)
@@ -28,6 +27,7 @@ import Distribution.Simple.Utils
2827
import Distribution.Version
2928

3029
import Distribution.Client.Setup (GlobalFlags (..))
30+
import Distribution.Utils.LogProgress (runLogProgress)
3131

3232
-- Project orchestration imports
3333

@@ -44,6 +44,7 @@ import Distribution.Types.Component
4444
import Distribution.Verbosity
4545
import qualified Distribution.Compat.Graph as Graph
4646

47+
4748
-- | The data type for gen-bounds command flags
4849
data GenBoundsFlags = GenBoundsFlags {}
4950

@@ -115,7 +116,7 @@ genBoundsAction flags targetStrings globalFlags =
115116
targetSelectors
116117

117118
-- Step 3: Prune the install plan to the targets.
118-
let elaboratedPlan' =
119+
elaboratedPlan' <- runLogProgress verbosity $
119120
pruneInstallPlanToTargets
120121
TargetActionBuild
121122
targets

cabal-install/src/Distribution/Client/CmdHaddock.hs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ import Distribution.Verbosity
7676

7777
import Distribution.Client.Errors
7878
import qualified System.Exit (exitSuccess)
79+
import Distribution.Utils.LogProgress (runLogProgress)
7980

8081
newtype ClientHaddockFlags = ClientHaddockFlags {openInBrowser :: Flag Bool}
8182

@@ -189,11 +190,12 @@ haddockAction relFlags targetStrings globalFlags = do
189190
Nothing
190191
targetSelectors
191192

192-
let elaboratedPlan' =
193+
elaboratedPlan' <- runLogProgress verbosity $
193194
pruneInstallPlanToTargets
194195
TargetActionHaddock
195196
targets
196197
elaboratedPlan
198+
197199
return (elaboratedPlan', targets)
198200

199201
printPlan verbosity baseCtx buildCtx

cabal-install/src/Distribution/Client/CmdHaddockProject.hs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ import Distribution.Types.PackageDescription (PackageDescription (benchmarks, su
9797
import Distribution.Types.PackageId (pkgName)
9898
import Distribution.Types.PackageName (unPackageName)
9999
import Distribution.Types.UnitId (unUnitId)
100+
import Distribution.Utils.LogProgress (runLogProgress)
100101
import Distribution.Verbosity as Verbosity
101102
( normal
102103
)
@@ -146,11 +147,12 @@ haddockProjectAction flags _extraArgs globalFlags = do
146147
Nothing
147148
targetSelectors
148149

149-
let elaboratedPlan' =
150-
pruneInstallPlanToTargets
151-
TargetActionBuild
152-
targets
153-
elaboratedPlan
150+
elaboratedPlan' <-
151+
runLogProgress verbosity $
152+
pruneInstallPlanToTargets
153+
TargetActionBuild
154+
targets
155+
elaboratedPlan
154156
return (elaboratedPlan', targets)
155157

156158
let elaboratedPlan :: ElaboratedInstallPlan

cabal-install/src/Distribution/Client/CmdInstall.hs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,9 @@ import Distribution.Types.VersionRange
219219
import Distribution.Utils.Generic
220220
( writeFileAtomic
221221
)
222+
import Distribution.Utils.LogProgress
223+
( runLogProgress
224+
)
222225
import Distribution.Verbosity
223226
( lessVerbose
224227
, normal
@@ -900,15 +903,17 @@ constructProjectBuildContext verbosity baseCtx targetSelectors = do
900903
Nothing
901904
targetSelectors
902905

903-
let prunedToTargetsElaboratedPlan =
906+
prunedToTargetsElaboratedPlan <- runLogProgress verbosity $
904907
pruneInstallPlanToTargets TargetActionBuild targets elaboratedPlan
908+
905909
prunedElaboratedPlan <-
906910
if buildSettingOnlyDeps (buildSettings baseCtx)
907-
then
908-
either (reportCannotPruneDependencies verbosity) return $
909-
pruneInstallPlanToDependencies
910-
(Map.keysSet targets)
911-
prunedToTargetsElaboratedPlan
911+
then do
912+
case pruneInstallPlanToDependencies (Map.keysSet targets) prunedToTargetsElaboratedPlan of
913+
Left err ->
914+
reportCannotPruneDependencies verbosity err
915+
Right elaboratedPlan'' ->
916+
runLogProgress verbosity $ InstallPlan.new' elaboratedPlan''
912917
else return prunedToTargetsElaboratedPlan
913918

914919
return (prunedElaboratedPlan, targets)

cabal-install/src/Distribution/Client/CmdListBin.hs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ import Distribution.Client.Errors
6060
import qualified Distribution.Client.InstallPlan as IP
6161
import qualified Distribution.Simple.InstallDirs as InstallDirs
6262
import qualified Distribution.Solver.Types.ComponentDeps as CD
63+
import Distribution.Utils.LogProgress (runLogProgress)
6364

6465
-------------------------------------------------------------------------------
6566
-- Command
@@ -127,11 +128,12 @@ listbinAction flags args globalFlags = do
127128
)
128129
targets
129130

130-
let elaboratedPlan' =
131+
elaboratedPlan' <- runLogProgress verbosity $
131132
pruneInstallPlanToTargets
132133
TargetActionBuild
133134
targets
134135
elaboratedPlan
136+
135137
return (elaboratedPlan', targets)
136138

137139
(selectedUnitId, selectedComponent) <-

cabal-install/src/Distribution/Client/CmdRepl.hs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,9 @@ import Distribution.Types.VersionRange
157157
import Distribution.Utils.Generic
158158
( safeHead
159159
)
160+
import Distribution.Utils.LogProgress
161+
( runLogProgress
162+
)
160163
import Distribution.Verbosity
161164
( lessVerbose
162165
, normal
@@ -393,13 +396,13 @@ replAction flags@NixStyleFlags{extraFlags = r@ReplFlags{..}, ..} targetStrings g
393396
-- Recalculate with updated project.
394397
targets <- validatedTargets (projectConfigShared projectConfig) toolchainCompiler elaboratedPlan targetSelectors
395398

396-
let
397-
elaboratedPlan' =
399+
elaboratedPlan' <- runLogProgress verbosity $
398400
pruneInstallPlanToTargets
399401
TargetActionRepl
400402
targets
401403
elaboratedPlan
402-
includeTransitive = fromFlagOrDefault True (envIncludeTransitive replEnvFlags)
404+
405+
let includeTransitive = fromFlagOrDefault True (envIncludeTransitive replEnvFlags)
403406

404407
pkgsBuildStatus <-
405408
rebuildTargetsDryRun

cabal-install/src/Distribution/Client/CmdRun.hs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ import System.FilePath
144144
, isValid
145145
, (</>)
146146
)
147+
import Distribution.Utils.LogProgress (runLogProgress)
147148

148149
runCommand :: CommandUI (NixStyleFlags ())
149150
runCommand =
@@ -247,11 +248,12 @@ runAction flags targetAndArgs globalFlags =
247248
)
248249
targets
249250

250-
let elaboratedPlan' =
251+
elaboratedPlan' <- runLogProgress verbosity $
251252
pruneInstallPlanToTargets
252253
TargetActionBuild
253254
targets
254255
elaboratedPlan
256+
255257
return (elaboratedPlan', targets)
256258

257259
(selectedUnitId, selectedComponent) <-

0 commit comments

Comments
 (0)