@@ -6,15 +6,14 @@ import qualified Cabal2Nix hiding (gpd2nix)
66import qualified Data.ByteString.Lazy as BSL
77import Data.Foldable (for_ )
88import qualified Data.Text.Encoding as T
9- import Distribution.Client.DistDirLayout (DistDirLayout (distDirectory , distProjectCacheFile , distProjectFile ))
9+ import Distribution.Client.DistDirLayout (DistDirLayout (.. ))
1010import Distribution.Client.GlobalFlags
1111import Distribution.Client.HashValue (HashValue , showHashValue )
1212import qualified Distribution.Client.InstallPlan as InstallPlan
1313import Distribution.Client.NixStyleOptions (NixStyleFlags (.. ), defaultNixStyleFlags , nixStyleOptions )
1414import Distribution.Client.ProjectConfig
1515import Distribution.Client.ProjectOrchestration
16- import Distribution.Client.ProjectPlanOutput (writePlanExternalRepresentation )
17- import Distribution.Client.ProjectPlanning (ElaboratedConfiguredPackage (.. ), rebuildInstallPlan , availableTargets )
16+ import Distribution.Client.ProjectPlanning (ElaboratedConfiguredPackage (.. ), availableTargets , rebuildInstallPlan )
1817import Distribution.Client.Setup
1918import Distribution.Client.Types.PackageLocation (PackageLocation (.. ))
2019import Distribution.Client.Types.Repo (LocalRepo (.. ), RemoteRepo (.. ), Repo (.. ))
@@ -25,14 +24,15 @@ import Distribution.Pretty (prettyShow)
2524import Distribution.Simple.Command
2625import Distribution.Simple.Flag
2726import qualified Distribution.Simple.Utils as Cabal
28- import Distribution.Types.SourceRepo (KnownRepoType (Git ), RepoType (.. ))
27+ import Distribution.Types.SourceRepo (KnownRepoType (.. ), RepoType (.. ))
2928import Distribution.Verbosity (Verbosity )
3029import qualified Distribution.Verbosity as Verbosity
3130import Freeze (projectFreezeConfig )
3231import Nix.Expr
3332import Nix.Pretty (prettyNix )
3433import Prettyprinter (Doc )
3534import Prettyprinter.Render.Text (hPutDoc )
35+ import ProjectPlanOutput (writePlanExternalRepresentation )
3636import System.Environment (getArgs )
3737import System.FilePath
3838import System.IO (IOMode (WriteMode ), hClose , openFile )
@@ -46,35 +46,39 @@ main = do
4646 CommandErrors errs -> putStrLn $ " commandErrors: " ++ show errs
4747 CommandReadyToGo (mkflags, _commandParse) ->
4848 let globalFlags = defaultGlobalFlags
49- flags@ NixStyleFlags {configFlags} = mkflags (commandDefaultFlags cmdUI)
49+ flags@ NixStyleFlags {configFlags} = mkflags (commandDefaultFlags cmdUI)
5050 verbosity = fromFlagOrDefault Verbosity. normal (configVerbosity configFlags)
5151 cliConfig = commandLineFlagsToProjectConfig globalFlags flags mempty
5252 in installPlanAction verbosity cliConfig
5353
5454cmdUI :: CommandUI (NixStyleFlags () )
5555cmdUI =
5656 CommandUI
57- { commandName = " " ,
58- commandSynopsis = " Makes an install-plan" ,
59- commandUsage = (" Usage: " ++ ),
60- commandDescription = Nothing ,
61- commandNotes = Nothing ,
62- commandDefaultFlags = defaultNixStyleFlags () ,
63- commandOptions = nixStyleOptions (const [] )
57+ { commandName = " "
58+ , commandSynopsis = " Makes an install-plan"
59+ , commandUsage = (" Usage: " ++ )
60+ , commandDescription = Nothing
61+ , commandNotes = Nothing
62+ , commandDefaultFlags = defaultNixStyleFlags ()
63+ , commandOptions = nixStyleOptions (const [] )
6464 }
6565
6666-- The following is adapted from cabal-install's Distribution.Client.CmdFreeze
6767installPlanAction :: Verbosity -> ProjectConfig -> IO ()
6868installPlanAction verbosity cliConfig = do
69- ProjectBaseContext {distDirLayout, cabalDirLayout, projectConfig, localPackages} <-
69+ ProjectBaseContext {distDirLayout, cabalDirLayout, projectConfig, localPackages} <-
7070 establishProjectBaseContext verbosity cliConfig OtherCommand
7171
7272 (_improvedPlan, elaboratedPlan, elaboratedSharedConfig, totalIndexState, activeRepos) <-
7373 rebuildInstallPlan verbosity distDirLayout cabalDirLayout projectConfig localPackages Nothing
7474
7575 -- Write plan.json
7676 Cabal. notice verbosity $ " Writing plan.json to " ++ distProjectCacheFile distDirLayout " plan.json"
77- writePlanExternalRepresentation distDirLayout elaboratedPlan elaboratedSharedConfig (availableTargets elaboratedPlan)
77+ writePlanExternalRepresentation
78+ distDirLayout
79+ elaboratedPlan
80+ elaboratedSharedConfig
81+ (availableTargets elaboratedPlan)
7882
7983 -- Write cabal.freeze
8084 let freezeConfig = projectFreezeConfig elaboratedPlan totalIndexState activeRepos
@@ -90,12 +94,12 @@ installPlanAction verbosity cliConfig = do
9094
9195 for_ ecps $
9296 \ ElaboratedConfiguredPackage
93- { elabPkgSourceId,
94- elabPkgSourceLocation,
95- elabPkgSourceHash,
96- elabLocalToProject,
97- elabPkgDescriptionOverride
98- } -> do
97+ { elabPkgSourceId
98+ , elabPkgSourceLocation
99+ , elabPkgSourceHash
100+ , elabLocalToProject
101+ , elabPkgDescriptionOverride
102+ } -> do
99103 let nixFile = cabalFilesDir </> prettyShow (pkgName elabPkgSourceId) <.> " nix"
100104 for_ elabPkgDescriptionOverride $ \ pkgTxt -> do
101105 -- In the plan we have elabPkgDescription :: PackageDescription which is the cabal file after
@@ -123,8 +127,8 @@ packageLocation2Src pkgSrcLoc pkgSrcHash = case pkgSrcLoc of
123127 (SourceRepositoryPackage (KnownRepoType Git ) location (Just tag) branch subdir [] ) ->
124128 Cabal2Nix. Git location tag branch subdir
125129 _otherCases -> error $ " Repository " <> show sourceRepoMaybe <> " not supported"
126- where
127- mSrcHash = showHashValue <$> pkgSrcHash
130+ where
131+ mSrcHash = showHashValue <$> pkgSrcHash
128132
129133writeDoc :: FilePath -> Doc ann -> IO ()
130134writeDoc file doc = do
0 commit comments