11{-# LANGUAGE MultiWayIf #-}
2- {-# LANGUAGE NamedFieldPuns #-}
32{-# LANGUAGE RankNTypes #-}
43
54-- | cabal-install CLI command: outdated
@@ -11,12 +10,6 @@ module Distribution.Client.CmdOutdated
1110import qualified Data.Set as Set
1211
1312import Distribution.Client.Compat.Prelude
14- import Distribution.Client.Config
15- ( SavedConfig
16- ( savedGlobalFlags
17- )
18- )
19- import Distribution.Client.Errors (CabalInstallException (OutdatedAction ))
2013import qualified Distribution.Client.IndexUtils as IndexUtils
2114import Distribution.Client.NixStyleOptions
2215 ( NixStyleFlags (.. )
@@ -41,14 +34,9 @@ import Distribution.Client.ProjectOrchestration
4134 , ProjectBaseContext (.. )
4235 , establishProjectBaseContext
4336 )
44- import Distribution.Client.Sandbox
45- ( loadConfigOrSandboxConfig
46- )
4737import Distribution.Client.Setup
4838 ( ConfigFlags (.. )
4939 , GlobalFlags (.. )
50- , configCompilerAux'
51- , withRepoContext
5240 )
5341import Distribution.Client.Types.PackageLocation
5442 ( UnresolvedPkgLoc
@@ -77,9 +65,11 @@ import Distribution.Simple.Flag
7765import Distribution.Simple.Setup
7866 ( trueArg
7967 )
68+ import Distribution.Simple.Configure
69+ ( configCompilerAuxEx
70+ )
8071import Distribution.Simple.Utils
8172 ( debug
82- , dieWithException
8373 , wrapText
8474 )
8575import Distribution.Solver.Types.SourcePackage
@@ -101,9 +91,7 @@ import Distribution.Types.PackageVersionConstraint
10191 )
10292import Distribution.Types.UnqualComponentName (UnqualComponentName )
10393import Distribution.Verbosity
104- ( lessVerbose
105- , normal
106- , silent
94+ ( normal
10795 )
10896import Distribution.Version
10997 ( simplifyVersionRange
@@ -131,34 +119,41 @@ outdatedCommand =
131119-- For more details on how this works, see the module
132120-- "Distribution.Client.ProjectOrchestration"
133121outdatedAction :: NixStyleFlags OutdatedFlags -> [String ] -> GlobalFlags -> IO ()
134- outdatedAction flags@ NixStyleFlags {configFlags} _extraArgs globalFlags = do
135- ProjectBaseContext {localPackages, projectConfig} <- establishProjectBaseContext verbosity cliConfig OtherCommand
122+ outdatedAction flags _extraArgs globalFlags = do
123+ prjBasedCtxt <- establishProjectBaseContext verbosity cliConfig OtherCommand
136124
137125 projectConfigWithSolverRepoContext
138126 verbosity
139- (projectConfigShared projectConfig)
140- (projectConfigBuildOnly projectConfig)
127+ (projectConfigShared $ projectConfig prjBasedCtxt )
128+ (projectConfigBuildOnly $ projectConfig prjBasedCtxt )
141129 $ \ repoContext -> do
142- -- Why?
143- -- when (not v2FreezeFile && (isJust mprojectDir || isJust mprojectFile)) $
144- -- dieWithException verbosity OutdatedAction
130+ let mprojectDir = flagToMaybe . flagProjectDir $ projectFlags flags
131+ mprojectFile = flagToMaybe . flagProjectFile $ projectFlags flags
145132
146133 sourcePkgDb <- IndexUtils. getSourcePackages verbosity repoContext
147134
148- let pkgVerConstraints = extractPackageVersionConstraints localPackages
135+ pkgVerConstraints <-
136+ if
137+ | v1FreezeFile -> V1Outdated. depsFromFreezeFile verbosity
138+ | v2FreezeFile -> do
139+ putStrLn $ " configHcFlavor: " ++ show (configHcFlavor $ configFlags flags)
140+ (comp, platform, _progdb) <- configCompilerAuxEx $ configFlags flags
141+ V1Outdated. depsFromNewFreezeFile verbosity globalFlags comp platform mprojectDir mprojectFile
142+ | otherwise -> pure $ extractPackageVersionConstraints (localPackages prjBasedCtxt)
149143
150144 debug verbosity $
151145 " Dependencies loaded: " ++ intercalate " , " (map prettyShow pkgVerConstraints)
152146
153147 let outdatedDeps = V1Outdated. listOutdated pkgVerConstraints sourcePkgDb (ListOutdatedSettings ignorePred minorPred)
154148
155- V1Outdated. showResult (lessVerbose verbosity) outdatedDeps simpleOutput
149+ when (not quiet) $
150+ V1Outdated. showResult verbosity outdatedDeps simpleOutput
156151
157152 if exitCode && (not . null $ outdatedDeps)
158153 then exitFailure
159154 else pure ()
160155 where
161- verbosity = fromFlagOrDefault normal (configVerbosity configFlags)
156+ verbosity = fromFlagOrDefault normal (configVerbosity $ configFlags flags )
162157
163158 cliConfig =
164159 commandLineFlagsToProjectConfig
0 commit comments