module Distribution.Nixpkgs.Haskell.Constraint
  ( Constraint, satisfiesConstraint, satisfiesConstraints
  ) where

import Distribution.Package
import Distribution.Version
import Distribution.Nixpkgs.Haskell.OrphanInstances ( )

type Constraint = Dependency

satisfiesConstraint :: PackageIdentifier -> Constraint -> Bool
satisfiesConstraint :: PackageIdentifier -> Constraint -> Bool
satisfiesConstraint (PackageIdentifier PackageName
pn Version
v) (Dependency PackageName
cn VersionRange
vr Set LibraryName
_) = (PackageName
pn PackageName -> PackageName -> Bool
forall a. Eq a => a -> a -> Bool
/= PackageName
cn) Bool -> Bool -> Bool
|| (Version
v Version -> VersionRange -> Bool
`withinRange` VersionRange
vr)

satisfiesConstraints :: PackageIdentifier -> [Constraint] -> Bool
satisfiesConstraints :: PackageIdentifier -> [Constraint] -> Bool
satisfiesConstraints PackageIdentifier
p = (Constraint -> Bool) -> [Constraint] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all (PackageIdentifier -> Constraint -> Bool
satisfiesConstraint PackageIdentifier
p)