@@ -18,7 +18,7 @@ module Distribution.Client.ProjectPlanOutput (
18
18
import Distribution.Client.ProjectPlanning.Types
19
19
import Distribution.Client.ProjectBuilding.Types
20
20
import Distribution.Client.DistDirLayout
21
- import Distribution.Client.Types (confInstId )
21
+ import Distribution.Client.Types (Repo ( .. ), RemoteRepo ( .. ), PackageLocation ( .. ), confInstId )
22
22
import Distribution.Client.PackageHash (showHashValue )
23
23
24
24
import qualified Distribution.Client.InstallPlan as InstallPlan
@@ -139,6 +139,7 @@ encodePlanAsJson distDirLayout elaboratedInstallPlan elaboratedSharedConfig =
139
139
, " flags" J. .= J. object [ PD. unFlagName fn J. .= v
140
140
| (fn,v) <- PD. unFlagAssignment (elabFlagAssignment elab) ]
141
141
, " style" J. .= J. String (style2str (elabLocalToProject elab) (elabBuildStyle elab))
142
+ , " pkg-src" J. .= packageLocationToJ (elabPkgSourceLocation elab)
142
143
] ++
143
144
[ " pkg-src-sha256" J. .= J. String (showHashValue hash)
144
145
| Just hash <- [elabPkgSourceHash elab] ] ++
@@ -168,6 +169,57 @@ encodePlanAsJson distDirLayout elaboratedInstallPlan elaboratedSharedConfig =
168
169
] ++
169
170
bin_file (compSolverName comp)
170
171
where
172
+ packageLocationToJ :: PackageLocation (Maybe FilePath ) -> J. Value
173
+ packageLocationToJ pkgloc =
174
+ case pkgloc of
175
+ LocalUnpackedPackage local ->
176
+ J. object [ " type" J. .= J. String " local"
177
+ , " path" J. .= J. String local
178
+ ]
179
+ LocalTarballPackage local ->
180
+ J. object [ " type" J. .= J. String " local-tar"
181
+ , " path" J. .= J. String local
182
+ ]
183
+ RemoteTarballPackage uri _ ->
184
+ J. object [ " type" J. .= J. String " remote-tar"
185
+ , " uri" J. .= J. String (show uri)
186
+ ]
187
+ RepoTarballPackage repo _ _ ->
188
+ J. object [ " type" J. .= J. String " repo-tar"
189
+ , " repo" J. .= repoToJ repo
190
+ ]
191
+ RemoteSourceRepoPackage srcRepo _ ->
192
+ J. object [ " type" J. .= J. String " source-repo"
193
+ , " source-repo" J. .= sourceRepoToJ srcRepo
194
+ ]
195
+
196
+ repoToJ :: Repo -> J. Value
197
+ repoToJ repo =
198
+ case repo of
199
+ RepoLocal {.. } ->
200
+ J. object [ " type" J. .= J. String " local-repo"
201
+ , " path" J. .= J. String repoLocalDir
202
+ ]
203
+ RepoRemote {.. } ->
204
+ J. object [ " type" J. .= J. String " remote-repo"
205
+ , " uri" J. .= J. String (show (remoteRepoURI repoRemote))
206
+ ]
207
+ RepoSecure {.. } ->
208
+ J. object [ " type" J. .= J. String " secure-repo"
209
+ , " uri" J. .= J. String (show (remoteRepoURI repoRemote))
210
+ ]
211
+
212
+ sourceRepoToJ :: PD. SourceRepo -> J. Value
213
+ sourceRepoToJ PD. SourceRepo {.. } =
214
+ J. object $ filter ((/= J. Null ) . snd ) $
215
+ [ " type" J. .= fmap jdisplay repoType
216
+ , " location" J. .= fmap J. String repoLocation
217
+ , " module" J. .= fmap J. String repoModule
218
+ , " branch" J. .= fmap J. String repoBranch
219
+ , " tag" J. .= fmap J. String repoTag
220
+ , " subdir" J. .= fmap J. String repoSubdir
221
+ ]
222
+
171
223
dist_dir = distBuildDirectory distDirLayout
172
224
(elabDistDirParams elaboratedSharedConfig elab)
173
225
@@ -510,7 +562,7 @@ postBuildProjectStatus plan previousPackagesUpToDate
510
562
Graph. revClosure packagesLibDepGraph
511
563
( Map. keys
512
564
. Map. filter (uncurry buildAttempted)
513
- $ Map. intersectionWith (,) pkgBuildStatus buildOutcomes
565
+ $ Map. intersectionWith (,) pkgBuildStatus buildOutcomes
514
566
)
515
567
516
568
-- The plan graph but only counting dependency-on-library edges
@@ -881,4 +933,3 @@ relativePackageDBPath relroot pkgdb =
881
933
UserPackageDB -> UserPackageDB
882
934
SpecificPackageDB path -> SpecificPackageDB relpath
883
935
where relpath = makeRelative relroot path
884
-
0 commit comments