packages feed

hix-0.7.0: lib/Hix/Managed/Cabal/Print.hs

module Hix.Managed.Cabal.Print where

import qualified Distribution.Client.SolverInstallPlan as SolverInstallPlan
import Distribution.Client.SolverInstallPlan (ResolverPackage (..), SolverInstallPlan, SolverPlanPackage)
import Distribution.InstalledPackageInfo (InstalledPackageInfo (InstalledPackageInfo, sourcePackageId))
import Distribution.Pretty (pretty)
import Distribution.Solver.Types.InstSolverPackage (InstSolverPackage (InstSolverPackage, instSolverPkgIPI))
import Distribution.Solver.Types.SolverPackage (SolverPackage (..))
import Distribution.Solver.Types.SourcePackage (SourcePackage (..))
import Exon (exon)

import Hix.Data.Monad (M)
import qualified Hix.Log as Log

showPackage :: SolverPlanPackage -> String
showPackage = \case
  PreExisting InstSolverPackage {instSolverPkgIPI = InstalledPackageInfo {sourcePackageId}} ->
    "existing: " <> show (pretty sourcePackageId)
  Configured SolverPackage {solverPkgSource = SourcePackage {srcpkgPackageId}} ->
    "configured: " <> show (pretty srcpkgPackageId)

printPlan :: SolverInstallPlan -> M ()
printPlan plan = do
  Log.info "Plan:"
  for_ (SolverInstallPlan.toList plan) \ pkg ->
    Log.infoCont [exon|📦 #{toText (showPackage pkg)}|]