dependency-0.1.0.7: Dependency resolution for package management

Safe HaskellNone
LanguageHaskell2010

Data.Dependency

Contents

Synopsis

Functions

resolveDependencies :: PackageSet Dependency -> [Dependency] -> DepM [[Dependency]] Source #

Heuristics:

  1. Always use a newer version when possible
  2. Obey constraints
  3. Specify an error for circular dependencies
  4. Specify an error for overconstrained builds
  5. Specify an error if a package is not present

This doesn't do any package resolution beyond versioning.

satisfies :: Ord a => Constraint a -> a -> Bool Source #

Types

data Dependency Source #

Instances

Eq Dependency Source # 
Ord Dependency Source # 
Show Dependency Source # 
Generic Dependency Source # 

Associated Types

type Rep Dependency :: * -> * #

NFData Dependency Source # 

Methods

rnf :: Dependency -> () #

type Rep Dependency Source # 
type Rep Dependency = D1 * (MetaData "Dependency" "Data.Dependency.Type" "dependency-0.1.0.7-BNBPKOi42UTEJ2zpVjIc4J" False) (C1 * (MetaCons "Dependency" PrefixI True) ((:*:) * ((:*:) * (S1 * (MetaSel (Just Symbol "_libName") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * String)) (S1 * (MetaSel (Just Symbol "_libConstraint") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Constraint Version)))) ((:*:) * (S1 * (MetaSel (Just Symbol "_libDependencies") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [String])) (S1 * (MetaSel (Just Symbol "_libVersion") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Version)))))

newtype PackageSet a Source #

Constructors

PackageSet (Map String (Set a)) 

Instances

Foldable PackageSet Source # 

Methods

fold :: Monoid m => PackageSet m -> m #

foldMap :: Monoid m => (a -> m) -> PackageSet a -> m #

foldr :: (a -> b -> b) -> b -> PackageSet a -> b #

foldr' :: (a -> b -> b) -> b -> PackageSet a -> b #

foldl :: (b -> a -> b) -> b -> PackageSet a -> b #

foldl' :: (b -> a -> b) -> b -> PackageSet a -> b #

foldr1 :: (a -> a -> a) -> PackageSet a -> a #

foldl1 :: (a -> a -> a) -> PackageSet a -> a #

toList :: PackageSet a -> [a] #

null :: PackageSet a -> Bool #

length :: PackageSet a -> Int #

elem :: Eq a => a -> PackageSet a -> Bool #

maximum :: Ord a => PackageSet a -> a #

minimum :: Ord a => PackageSet a -> a #

sum :: Num a => PackageSet a -> a #

product :: Num a => PackageSet a -> a #

Eq a => Eq (PackageSet a) Source # 

Methods

(==) :: PackageSet a -> PackageSet a -> Bool #

(/=) :: PackageSet a -> PackageSet a -> Bool #

Ord a => Ord (PackageSet a) Source # 
Generic (PackageSet a) Source # 

Associated Types

type Rep (PackageSet a) :: * -> * #

Methods

from :: PackageSet a -> Rep (PackageSet a) x #

to :: Rep (PackageSet a) x -> PackageSet a #

Binary a => Binary (PackageSet a) Source # 

Methods

put :: PackageSet a -> Put #

get :: Get (PackageSet a) #

putList :: [PackageSet a] -> Put #

type Rep (PackageSet a) Source # 
type Rep (PackageSet a) = D1 * (MetaData "PackageSet" "Data.Dependency.Type" "dependency-0.1.0.7-BNBPKOi42UTEJ2zpVjIc4J" True) (C1 * (MetaCons "PackageSet" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Map String (Set a)))))

newtype Version Source #

Constructors

Version [Integer] 

Instances

Eq Version Source # 

Methods

(==) :: Version -> Version -> Bool #

(/=) :: Version -> Version -> Bool #

Ord Version Source # 
Show Version Source # 
Generic Version Source # 

Associated Types

type Rep Version :: * -> * #

Methods

from :: Version -> Rep Version x #

to :: Rep Version x -> Version #

Binary Version Source # 

Methods

put :: Version -> Put #

get :: Get Version #

putList :: [Version] -> Put #

NFData Version Source # 

Methods

rnf :: Version -> () #

type Rep Version Source # 
type Rep Version = D1 * (MetaData "Version" "Data.Dependency.Type" "dependency-0.1.0.7-BNBPKOi42UTEJ2zpVjIc4J" True) (C1 * (MetaCons "Version" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Integer])))

data ResolveError Source #

An error that can occur during package resolution.

Instances

data Constraint a Source #

Constructors

LessThanEq a 
GreaterThanEq a 
Eq a 
Bounded (Constraint a) (Constraint a) 
None 

Instances

Functor Constraint Source # 

Methods

fmap :: (a -> b) -> Constraint a -> Constraint b #

(<$) :: a -> Constraint b -> Constraint a #

Eq a => Eq (Constraint a) Source # 

Methods

(==) :: Constraint a -> Constraint a -> Bool #

(/=) :: Constraint a -> Constraint a -> Bool #

Ord a => Ord (Constraint a) Source # 
Show a => Show (Constraint a) Source # 
Generic (Constraint a) Source # 

Associated Types

type Rep (Constraint a) :: * -> * #

Methods

from :: Constraint a -> Rep (Constraint a) x #

to :: Rep (Constraint a) x -> Constraint a #

Semigroup (Constraint a) Source # 
Monoid (Constraint a) Source # 
Pretty a => Pretty (Constraint a) Source # 

Methods

pretty :: Constraint a -> Doc #

prettyList :: [Constraint a] -> Doc #

NFData a => NFData (Constraint a) Source # 

Methods

rnf :: Constraint a -> () #

Recursive (Constraint a) Source # 

Methods

project :: Constraint a -> Base (Constraint a) (Constraint a) #

cata :: (Base (Constraint a) a -> a) -> Constraint a -> a #

para :: (Base (Constraint a) (Constraint a, a) -> a) -> Constraint a -> a #

gpara :: (Corecursive (Constraint a), Comonad w) => (forall b. Base (Constraint a) (w b) -> w (Base (Constraint a) b)) -> (Base (Constraint a) (EnvT (Constraint a) w a) -> a) -> Constraint a -> a #

prepro :: Corecursive (Constraint a) => (forall b. Base (Constraint a) b -> Base (Constraint a) b) -> (Base (Constraint a) a -> a) -> Constraint a -> a #

gprepro :: (Corecursive (Constraint a), Comonad w) => (forall b. Base (Constraint a) (w b) -> w (Base (Constraint a) b)) -> (forall c. Base (Constraint a) c -> Base (Constraint a) c) -> (Base (Constraint a) (w a) -> a) -> Constraint a -> a #

Corecursive (Constraint a) Source # 

Methods

embed :: Base (Constraint a) (Constraint a) -> Constraint a #

ana :: (a -> Base (Constraint a) a) -> a -> Constraint a #

apo :: (a -> Base (Constraint a) (Either (Constraint a) a)) -> a -> Constraint a #

postpro :: Recursive (Constraint a) => (forall b. Base (Constraint a) b -> Base (Constraint a) b) -> (a -> Base (Constraint a) a) -> a -> Constraint a #

gpostpro :: (Recursive (Constraint a), Monad m) => (forall b. m (Base (Constraint a) b) -> Base (Constraint a) (m b)) -> (forall c. Base (Constraint a) c -> Base (Constraint a) c) -> (a -> Base (Constraint a) (m a)) -> a -> Constraint a #

type Rep (Constraint a) Source # 
type Base (Constraint a) Source # 
type Base (Constraint a)