@@ -6,15 +6,14 @@ import qualified Cabal2Nix hiding (gpd2nix)
6
6
import qualified Data.ByteString.Lazy as BSL
7
7
import Data.Foldable (for_ )
8
8
import qualified Data.Text.Encoding as T
9
- import Distribution.Client.DistDirLayout (DistDirLayout (distDirectory , distProjectCacheFile , distProjectFile ))
9
+ import Distribution.Client.DistDirLayout (DistDirLayout (.. ))
10
10
import Distribution.Client.GlobalFlags
11
11
import Distribution.Client.HashValue (HashValue , showHashValue )
12
12
import qualified Distribution.Client.InstallPlan as InstallPlan
13
13
import Distribution.Client.NixStyleOptions (NixStyleFlags (.. ), defaultNixStyleFlags , nixStyleOptions )
14
14
import Distribution.Client.ProjectConfig
15
15
import 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 )
18
17
import Distribution.Client.Setup
19
18
import Distribution.Client.Types.PackageLocation (PackageLocation (.. ))
20
19
import Distribution.Client.Types.Repo (LocalRepo (.. ), RemoteRepo (.. ), Repo (.. ))
@@ -25,14 +24,15 @@ import Distribution.Pretty (prettyShow)
25
24
import Distribution.Simple.Command
26
25
import Distribution.Simple.Flag
27
26
import qualified Distribution.Simple.Utils as Cabal
28
- import Distribution.Types.SourceRepo (KnownRepoType (Git ), RepoType (.. ))
27
+ import Distribution.Types.SourceRepo (KnownRepoType (.. ), RepoType (.. ))
29
28
import Distribution.Verbosity (Verbosity )
30
29
import qualified Distribution.Verbosity as Verbosity
31
30
import Freeze (projectFreezeConfig )
32
31
import Nix.Expr
33
32
import Nix.Pretty (prettyNix )
34
33
import Prettyprinter (Doc )
35
34
import Prettyprinter.Render.Text (hPutDoc )
35
+ import ProjectPlanOutput (writePlanExternalRepresentation )
36
36
import System.Environment (getArgs )
37
37
import System.FilePath
38
38
import System.IO (IOMode (WriteMode ), hClose , openFile )
@@ -46,35 +46,39 @@ main = do
46
46
CommandErrors errs -> putStrLn $ " commandErrors: " ++ show errs
47
47
CommandReadyToGo (mkflags, _commandParse) ->
48
48
let globalFlags = defaultGlobalFlags
49
- flags@ NixStyleFlags {configFlags} = mkflags (commandDefaultFlags cmdUI)
49
+ flags@ NixStyleFlags {configFlags} = mkflags (commandDefaultFlags cmdUI)
50
50
verbosity = fromFlagOrDefault Verbosity. normal (configVerbosity configFlags)
51
51
cliConfig = commandLineFlagsToProjectConfig globalFlags flags mempty
52
52
in installPlanAction verbosity cliConfig
53
53
54
54
cmdUI :: CommandUI (NixStyleFlags () )
55
55
cmdUI =
56
56
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 [] )
64
64
}
65
65
66
66
-- The following is adapted from cabal-install's Distribution.Client.CmdFreeze
67
67
installPlanAction :: Verbosity -> ProjectConfig -> IO ()
68
68
installPlanAction verbosity cliConfig = do
69
- ProjectBaseContext {distDirLayout, cabalDirLayout, projectConfig, localPackages} <-
69
+ ProjectBaseContext {distDirLayout, cabalDirLayout, projectConfig, localPackages} <-
70
70
establishProjectBaseContext verbosity cliConfig OtherCommand
71
71
72
72
(_improvedPlan, elaboratedPlan, elaboratedSharedConfig, totalIndexState, activeRepos) <-
73
73
rebuildInstallPlan verbosity distDirLayout cabalDirLayout projectConfig localPackages Nothing
74
74
75
75
-- Write plan.json
76
76
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)
78
82
79
83
-- Write cabal.freeze
80
84
let freezeConfig = projectFreezeConfig elaboratedPlan totalIndexState activeRepos
@@ -90,12 +94,12 @@ installPlanAction verbosity cliConfig = do
90
94
91
95
for_ ecps $
92
96
\ 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
99
103
let nixFile = cabalFilesDir </> prettyShow (pkgName elabPkgSourceId) <.> " nix"
100
104
for_ elabPkgDescriptionOverride $ \ pkgTxt -> do
101
105
-- In the plan we have elabPkgDescription :: PackageDescription which is the cabal file after
@@ -123,8 +127,8 @@ packageLocation2Src pkgSrcLoc pkgSrcHash = case pkgSrcLoc of
123
127
(SourceRepositoryPackage (KnownRepoType Git ) location (Just tag) branch subdir [] ) ->
124
128
Cabal2Nix. Git location tag branch subdir
125
129
_otherCases -> error $ " Repository " <> show sourceRepoMaybe <> " not supported"
126
- where
127
- mSrcHash = showHashValue <$> pkgSrcHash
130
+ where
131
+ mSrcHash = showHashValue <$> pkgSrcHash
128
132
129
133
writeDoc :: FilePath -> Doc ann -> IO ()
130
134
writeDoc file doc = do
0 commit comments