module Hix.Managed.Cabal.Source where import Distribution.Client.Types (SourcePackageDb (SourcePackageDb, packageIndex)) import Distribution.PackageDescription ( GenericPackageDescription (GenericPackageDescription, packageDescription), PackageDescription, ) import Distribution.Solver.Types.PackageIndex (lookupPackageId) import Distribution.Solver.Types.SourcePackage (SourcePackage (SourcePackage, srcpkgDescription)) import qualified Hix.Data.PackageId as PackageId import Hix.Data.PackageId (PackageId) sourcePackage :: SourcePackageDb -> PackageId -> Maybe PackageDescription sourcePackage :: SourcePackageDb -> PackageId -> Maybe PackageDescription sourcePackage SourcePackageDb {PackageIndex UnresolvedSourcePackage packageIndex :: SourcePackageDb -> PackageIndex UnresolvedSourcePackage packageIndex :: PackageIndex UnresolvedSourcePackage packageIndex} PackageId package = PackageIndex UnresolvedSourcePackage -> PackageIdentifier -> Maybe UnresolvedSourcePackage forall pkg. Package pkg => PackageIndex pkg -> PackageIdentifier -> Maybe pkg lookupPackageId PackageIndex UnresolvedSourcePackage packageIndex (PackageId -> PackageIdentifier PackageId.toCabal PackageId package) Maybe UnresolvedSourcePackage -> (UnresolvedSourcePackage -> PackageDescription) -> Maybe PackageDescription forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b <&> \case SourcePackage {srcpkgDescription :: forall loc. SourcePackage loc -> GenericPackageDescription srcpkgDescription = GenericPackageDescription {PackageDescription packageDescription :: GenericPackageDescription -> PackageDescription packageDescription :: PackageDescription packageDescription}} -> PackageDescription packageDescription