{-# LANGUAGE DeriveGeneric #-}
module Distribution.Client.Types.SourcePackageDb (
    SourcePackageDb (..),
) where

import Distribution.Client.Compat.Prelude
import Prelude ()

import Distribution.Types.PackageName  (PackageName)
import Distribution.Types.VersionRange (VersionRange)

import Distribution.Client.Types.PackageLocation (UnresolvedSourcePackage)
import Distribution.Solver.Types.PackageIndex    (PackageIndex)

-- | This is the information we get from a @00-index.tar.gz@ hackage index.
--
data SourcePackageDb = SourcePackageDb
    { SourcePackageDb -> PackageIndex UnresolvedSourcePackage
packageIndex       :: PackageIndex UnresolvedSourcePackage
    , SourcePackageDb -> Map PackageName VersionRange
packagePreferences :: Map PackageName VersionRange
    }
  deriving (SourcePackageDb -> SourcePackageDb -> Bool
(SourcePackageDb -> SourcePackageDb -> Bool)
-> (SourcePackageDb -> SourcePackageDb -> Bool)
-> Eq SourcePackageDb
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SourcePackageDb -> SourcePackageDb -> Bool
$c/= :: SourcePackageDb -> SourcePackageDb -> Bool
== :: SourcePackageDb -> SourcePackageDb -> Bool
$c== :: SourcePackageDb -> SourcePackageDb -> Bool
Eq, (forall x. SourcePackageDb -> Rep SourcePackageDb x)
-> (forall x. Rep SourcePackageDb x -> SourcePackageDb)
-> Generic SourcePackageDb
forall x. Rep SourcePackageDb x -> SourcePackageDb
forall x. SourcePackageDb -> Rep SourcePackageDb x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SourcePackageDb x -> SourcePackageDb
$cfrom :: forall x. SourcePackageDb -> Rep SourcePackageDb x
Generic)

instance Binary SourcePackageDb