Skip to content

Commit ba00b45

Browse files
committed
cabal haddock: imply dependencies, but gentler
1 parent dfe29cd commit ba00b45

File tree

6 files changed

+28
-12
lines changed

6 files changed

+28
-12
lines changed

cabal-install/cabal-install.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ library
209209
Distribution.Client.Types
210210
Distribution.Client.Types.AllowNewer
211211
Distribution.Client.Types.BuildResults
212+
Distribution.Client.Types.Command
212213
Distribution.Client.Types.ConfiguredId
213214
Distribution.Client.Types.ConfiguredPackage
214215
Distribution.Client.Types.Credentials

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ import Distribution.Client.Setup
3535
( CommonSetupFlags (..)
3636
, ConfigFlags (..)
3737
, GlobalFlags
38-
, InstallFlags (..)
3938
)
4039
import Distribution.Client.TargetProblem
4140
( TargetProblem (..)
@@ -151,9 +150,7 @@ haddockAction relFlags targetStrings globalFlags = do
151150

152151
let
153152
verbosity = fromFlagOrDefault normal (setupVerbosity $ configCommonFlags configFlags)
154-
installDoc = fromFlagOrDefault True (installDocumentation installFlags)
155-
flags' = flags{installFlags = installFlags{installDocumentation = Flag installDoc}}
156-
cliConfig = commandLineFlagsToProjectConfig globalFlags flags' mempty -- ClientInstallFlags, not needed here
153+
cliConfig = commandLineFlagsToProjectConfig globalFlags flags mempty -- ClientInstallFlags, not needed here
157154
projCtx <- establishProjectBaseContext verbosity cliConfig HaddockCommand
158155

159156
let relBaseCtx@ProjectBaseContext{projectConfig = relProjectConfig}

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,8 @@ import Distribution.Client.TargetSelector
135135
, reportTargetSelectorProblems
136136
)
137137
import Distribution.Client.Types
138-
( DocsResult (..)
138+
( CurrentCommand (..)
139+
, DocsResult (..)
139140
, GenericReadyPackage (..)
140141
, PackageLocation (..)
141142
, PackageSpecifier (..)
@@ -230,11 +231,6 @@ import System.Posix.Signals (sigKILL, sigSEGV)
230231

231232
#endif
232233

233-
-- | Tracks what command is being executed, because we need to hide this somewhere
234-
-- for cases that need special handling (usually for error reporting).
235-
data CurrentCommand = InstallCommand | HaddockCommand | BuildCommand | ReplCommand | OtherCommand
236-
deriving (Show, Eq)
237-
238234
-- | This holds the context of a project prior to solving: the content of the
239235
-- @cabal.project@, @cabal/config@ and all the local package @.cabal@ files.
240236
data ProjectBaseContext = ProjectBaseContext
@@ -286,6 +282,7 @@ establishProjectBaseContextWithRoot verbosity cliConfig projectRoot currentComma
286282
httpTransport
287283
distDirLayout
288284
cliConfig
285+
currentCommand
289286

290287
let ProjectConfigBuildOnly
291288
{ projectConfigLogsDir

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,7 @@ rebuildProjectConfig
354354
-> HttpTransport
355355
-> DistDirLayout
356356
-> ProjectConfig
357+
-> CurrentCommand
357358
-> IO
358359
( ProjectConfig
359360
, [PackageSpecifier UnresolvedSourcePackage]
@@ -368,7 +369,8 @@ rebuildProjectConfig
368369
, distProjectCacheDirectory
369370
, distProjectFile
370371
}
371-
cliConfig = do
372+
cliConfig
373+
currentCommand = do
372374
progsearchpath <- liftIO $ getSystemSearchPath
373375

374376
let fileMonitorProjectConfig = newFileMonitor (distProjectCacheFile "config")
@@ -415,14 +417,22 @@ rebuildProjectConfig
415417
notice (verboseStderr verbosity) . render . vcat $
416418
text "Configuration is affected by the following files:" : configfiles
417419

418-
return (projectConfig <> cliConfig, localPackages)
420+
return (commandDefaults currentCommand <> projectConfig <> cliConfig, localPackages)
419421
where
420422
ProjectConfigShared{projectConfigHcFlavor, projectConfigHcPath, projectConfigHcPkg, projectConfigIgnoreProject, projectConfigConfigFile} =
421423
projectConfigShared cliConfig
422424

423425
PackageConfig{packageConfigProgramPaths, packageConfigProgramPathExtra} =
424426
projectConfigLocalPackages cliConfig
425427

428+
-- Some commands may require special defaults
429+
commandDefaults HaddockCommand = -- `cabal haddock` emplies --enable-documentation, #7462
430+
mempty
431+
{ projectConfigAllPackages = mempty { packageConfigDocumentation = pure True }
432+
, projectConfigLocalPackages = mempty { packageConfigDocumentation = pure True }
433+
}
434+
commandDefaults _ = mempty
435+
426436
-- Read the cabal.project (or implicit config) and combine it with
427437
-- arguments from the command line
428438
--

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
-- Various common data types for the entire cabal-install system
1818
module Distribution.Client.Types
1919
( module Distribution.Client.Types.AllowNewer
20+
, module Distribution.Client.Types.Command
2021
, module Distribution.Client.Types.ConfiguredId
2122
, module Distribution.Client.Types.ConfiguredPackage
2223
, module Distribution.Client.Types.BuildResults
@@ -31,6 +32,7 @@ module Distribution.Client.Types
3132

3233
import Distribution.Client.Types.AllowNewer
3334
import Distribution.Client.Types.BuildResults
35+
import Distribution.Client.Types.Command
3436
import Distribution.Client.Types.ConfiguredId
3537
import Distribution.Client.Types.ConfiguredPackage
3638
import Distribution.Client.Types.PackageLocation
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-- |
2+
3+
module Distribution.Client.Types.Command where
4+
5+
6+
-- | Tracks what command is being executed, because we need to hide this somewhere
7+
-- for cases that need special handling (usually for error reporting).
8+
data CurrentCommand = InstallCommand | HaddockCommand | BuildCommand | ReplCommand | OtherCommand
9+
deriving (Show, Eq)

0 commit comments

Comments
 (0)