Skip to content

Commit 4b93757

Browse files
committed
Add AmbiguityResolver to decide how to resolve ambiguty
Every other command defaults to what they used to do. show-build-info now just chooses the first choice, since it doesn't care about ambiguity.
1 parent 0587c91 commit 4b93757

File tree

11 files changed

+56
-33
lines changed

11 files changed

+56
-33
lines changed

cabal-install/Distribution/Client/CmdBench.hs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import Distribution.Client.ProjectOrchestration
2222
import Distribution.Client.CmdErrorMessages
2323
( renderTargetSelector, showTargetSelector, renderTargetProblem,
2424
renderTargetProblemNoTargets, plural, targetSelectorPluralPkgs,
25-
targetSelectorFilter )
25+
targetSelectorFilter, AmbiguityResolver(..) )
2626
import Distribution.Client.TargetProblem
2727
( TargetProblem (..) )
2828
import Distribution.Client.NixStyleOptions
@@ -87,7 +87,8 @@ benchAction flags@NixStyleFlags {..} targetStrings globalFlags = do
8787
baseCtx <- establishProjectBaseContext verbosity cliConfig OtherCommand
8888

8989
targetSelectors <- either (reportTargetSelectorProblems verbosity) return
90-
=<< readTargetSelectors (localPackages baseCtx) (Just BenchKind) targetStrings
90+
=<< readTargetSelectors (localPackages baseCtx)
91+
(AmbiguityResolverKind BenchKind) targetStrings
9192

9293
buildCtx <-
9394
runProjectPreBuildPhase verbosity baseCtx $ \elaboratedPlan -> do
@@ -120,7 +121,7 @@ benchAction flags@NixStyleFlags {..} targetStrings globalFlags = do
120121
runProjectPostBuildPhase verbosity baseCtx buildCtx buildOutcomes
121122
where
122123
verbosity = fromFlagOrDefault normal (configVerbosity configFlags)
123-
cliConfig = commandLineFlagsToProjectConfig globalFlags flags
124+
cliConfig = commandLineFlagsToProjectConfig globalFlags flags
124125
mempty -- ClientInstallFlags, not needed here
125126

126127
-- | This defines what a 'TargetSelector' means for the @bench@ command.

cabal-install/Distribution/Client/CmdBuild.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,8 @@ buildAction flags@NixStyleFlags { extraFlags = buildFlags, ..} targetStrings glo
106106

107107
targetSelectors <-
108108
either (reportTargetSelectorProblems verbosity) return
109-
=<< readTargetSelectors (localPackages baseCtx) Nothing targetStrings
109+
=<< readTargetSelectors (localPackages baseCtx)
110+
AmbiguityResolverNone targetStrings
110111

111112
buildCtx <-
112113
runProjectPreBuildPhase verbosity baseCtx $ \elaboratedPlan -> do

cabal-install/Distribution/Client/CmdErrorMessages.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import Distribution.Client.TargetSelector
2121
import Distribution.Client.TargetProblem
2222
( TargetProblem(..), TargetProblem' )
2323
import Distribution.Client.TargetSelector
24-
( ComponentKind(..), ComponentKindFilter, TargetSelector(..),
24+
( ComponentKind(..), AmbiguityResolver(..), TargetSelector(..),
2525
componentKind, showTargetSelector )
2626

2727
import Distribution.Package
@@ -170,7 +170,7 @@ targetSelectorRefersToPkgs (TargetPackageNamed _ mkfilter) = isNothing mkfilter
170170
targetSelectorRefersToPkgs TargetComponent{} = False
171171
targetSelectorRefersToPkgs TargetComponentUnknown{} = False
172172

173-
targetSelectorFilter :: TargetSelector -> Maybe ComponentKindFilter
173+
targetSelectorFilter :: TargetSelector -> Maybe ComponentKind
174174
targetSelectorFilter (TargetPackage _ _ mkfilter) = mkfilter
175175
targetSelectorFilter (TargetPackageNamed _ mkfilter) = mkfilter
176176
targetSelectorFilter (TargetAllPackages mkfilter) = mkfilter

cabal-install/Distribution/Client/CmdHaddock.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ haddockAction flags@NixStyleFlags {..} targetStrings globalFlags = do
7676
baseCtx <- establishProjectBaseContext verbosity cliConfig HaddockCommand
7777

7878
targetSelectors <- either (reportTargetSelectorProblems verbosity) return
79-
=<< readTargetSelectors (localPackages baseCtx) Nothing targetStrings
79+
=<< readTargetSelectors (localPackages baseCtx)
80+
AmbiguityResolverNone targetStrings
8081

8182
buildCtx <-
8283
runProjectPreBuildPhase verbosity baseCtx $ \elaboratedPlan -> do

cabal-install/Distribution/Client/CmdInstall.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ installAction flags@NixStyleFlags { extraFlags = clientInstallFlags', .. } targe
241241
targetSelectors <-
242242
either (reportTargetSelectorProblems verbosity) return
243243
=<< readTargetSelectors (localPackages localBaseCtx)
244-
Nothing targetStrings''
244+
AmbiguityResolverNone targetStrings''
245245

246246
(specs, selectors) <-
247247
getSpecsAndTargetSelectors
@@ -430,7 +430,7 @@ getSpecsAndTargetSelectors
430430
-> [TargetSelector]
431431
-> DistDirLayout
432432
-> ProjectBaseContext
433-
-> Maybe ComponentKindFilter
433+
-> Maybe ComponentKind
434434
-> IO ([PackageSpecifier UnresolvedSourcePackage], [TargetSelector])
435435
getSpecsAndTargetSelectors verbosity reducedVerbosity pkgDb targetSelectors localDistDirLayout localBaseCtx targetFilter =
436436
withInstallPlan reducedVerbosity localBaseCtx $ \elaboratedPlan _ -> do

cabal-install/Distribution/Client/CmdRepl.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import qualified Distribution.Types.Lens as L
2626
import Distribution.Client.NixStyleOptions
2727
( NixStyleFlags (..), nixStyleOptions, defaultNixStyleFlags )
2828
import Distribution.Client.CmdErrorMessages
29-
( renderTargetSelector, showTargetSelector,
29+
( renderTargetSelector, showTargetSelector, AmbiguityResolver(..),
3030
renderTargetProblem,
3131
targetSelectorRefersToPkgs,
3232
renderComponentKind, renderListCommaAnd, renderListSemiAnd,
@@ -344,7 +344,7 @@ withProject cliConfig verbosity targetStrings = do
344344
baseCtx <- establishProjectBaseContext verbosity cliConfig OtherCommand
345345

346346
targetSelectors <- either (reportTargetSelectorProblems verbosity) return
347-
=<< readTargetSelectors (localPackages baseCtx) (Just LibKind) targetStrings
347+
=<< readTargetSelectors (localPackages baseCtx) (AmbiguityResolverKind LibKind) targetStrings
348348

349349
return (baseCtx, targetSelectors, return (), ProjectRepl)
350350

cabal-install/Distribution/Client/CmdRun.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ import Distribution.Client.ProjectPlanning
5959
import Distribution.Client.ProjectPlanning.Types
6060
( dataDirsEnvironmentForPlan )
6161
import Distribution.Client.TargetSelector
62-
( TargetSelectorProblem(..), TargetString(..) )
62+
( TargetSelectorProblem(..), TargetString(..), AmbiguityResolver(..) )
6363
import Distribution.Client.InstallPlan
6464
( toList, foldPlanPackage )
6565
import Distribution.Types.UnqualComponentName
@@ -182,7 +182,7 @@ runAction flags@NixStyleFlags {..} targetStrings globalFlags = do
182182
else reportTargetSelectorProblems verbosity err
183183

184184
(baseCtx', targetSelectors) <-
185-
readTargetSelectors (localPackages baseCtx) (Just ExeKind) (take 1 targetStrings)
185+
readTargetSelectors (localPackages baseCtx) (AmbiguityResolverKind ExeKind) (take 1 targetStrings)
186186
>>= \case
187187
Left err@(TargetSelectorNoTargetsInProject:_)
188188
| (script:_) <- targetStrings -> scriptOrError script err

cabal-install/Distribution/Client/CmdSdist.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import Distribution.Client.ProjectOrchestration
1818
import Distribution.Client.NixStyleOptions
1919
( NixStyleFlags (..), defaultNixStyleFlags )
2020
import Distribution.Client.TargetSelector
21-
( TargetSelector(..), ComponentKind
21+
( TargetSelector(..), ComponentKind, AmbiguityResolver(..)
2222
, readTargetSelectors, reportTargetSelectorProblems )
2323
import Distribution.Client.Setup
2424
( GlobalFlags(..) )
@@ -151,7 +151,7 @@ sdistAction (ProjectFlags{..}, SdistFlags{..}) targetStrings globalFlags = do
151151
let localPkgs = localPackages baseCtx
152152

153153
targetSelectors <- either (reportTargetSelectorProblems verbosity) return
154-
=<< readTargetSelectors localPkgs Nothing targetStrings
154+
=<< readTargetSelectors localPkgs AmbiguityResolverNone targetStrings
155155

156156
-- elaborate path, create target directory
157157
mOutputPath' <- case mOutputPath of

cabal-install/Distribution/Client/CmdShowBuildInfo.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ showBuildInfoAction flags@NixStyleFlags { extraFlags = (ShowBuildInfoFlags fileO
114114
}
115115

116116
targetSelectors <- either (reportTargetSelectorProblems verbosity) return
117-
=<< readTargetSelectors (localPackages baseCtx') Nothing targetStrings
117+
=<< readTargetSelectors (localPackages baseCtx') AmbiguityResolverFirst targetStrings
118118

119119
buildCtx <-
120120
runProjectPreBuildPhase verbosity baseCtx' $ \elaboratedPlan -> do

cabal-install/Distribution/Client/CmdTest.hs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ import Distribution.Client.ProjectOrchestration
2222
import Distribution.Client.CmdErrorMessages
2323
( renderTargetSelector, showTargetSelector, targetSelectorFilter, plural,
2424
renderTargetProblem,
25-
renderTargetProblemNoTargets, targetSelectorPluralPkgs )
25+
renderTargetProblemNoTargets, targetSelectorPluralPkgs,
26+
AmbiguityResolver(..) )
2627
import Distribution.Client.TargetProblem
2728
( TargetProblem (..) )
2829
import Distribution.Client.NixStyleOptions
@@ -99,7 +100,8 @@ testAction flags@NixStyleFlags {..} targetStrings globalFlags = do
99100
baseCtx <- establishProjectBaseContext verbosity cliConfig OtherCommand
100101

101102
targetSelectors <- either (reportTargetSelectorProblems verbosity) return
102-
=<< readTargetSelectors (localPackages baseCtx) (Just TestKind) targetStrings
103+
=<< readTargetSelectors (localPackages baseCtx)
104+
(AmbiguityResolverKind TestKind) targetStrings
103105

104106
buildCtx <-
105107
runProjectPreBuildPhase verbosity baseCtx $ \elaboratedPlan -> do

0 commit comments

Comments
 (0)