dependency 0.1.0.10 → 0.1.0.11
raw patch · 4 files changed
+14/−14 lines, 4 filesdep +lensdep −microlensdep ~base
Dependencies added: lens
Dependencies removed: microlens
Dependency ranges changed: base
Files
- dependency.cabal +3/−3
- src/Data/Dependency.hs +10/−8
- src/Data/Dependency/Sort.hs +1/−2
- src/Data/Dependency/Type.hs +0/−1
dependency.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: dependency-version: 0.1.0.10+version: 0.1.0.11 license: BSD3 license-file: LICENSE copyright: Copyright: (c) 2018 Vanessa McHale@@ -34,11 +34,11 @@ default-language: Haskell2010 ghc-options: -Wall build-depends:- base >=4.10 && <5,+ base >=4.11 && <5, ansi-wl-pprint -any, containers -any, recursion-schemes -any,- microlens -any,+ lens -any, transformers -any, binary -any, deepseq -any,
src/Data/Dependency.hs view
@@ -74,7 +74,8 @@ buildSequence :: [Dependency] -> [[Dependency]] buildSequence = reverse . groupBy independent . sortDeps- where independent (Dependency ln ls _) (Dependency ln' ls' _) = ln' `notElem` (fst <$> ls) && ln `notElem` (fst <$> ls')+ where independent (Dependency ln ls _) (Dependency ln' ls' _) =+ ln' `notElem` (fst <$> ls) && ln `notElem` (fst <$> ls') iterateM :: (Monad m) => Int -> (a -> m a) -> a -> m [a] iterateM 0 _ _ = pure []@@ -87,15 +88,14 @@ n = length (toList ps) saturateDeps' :: PackageSet Dependency -> Dependency -> DepM (S.Set Dependency)-saturateDeps' (PackageSet ps) dep = do- deps <- sequence [ lookupMap lib ps | lib <- fst <$> _libDependencies dep ]- list <- (:) dep <$> traverse (lookupSet Nothing mempty) deps- pure $ S.fromList list+saturateDeps' (PackageSet ps) dep = S.fromList <$> list+ where list = (:) dep <$> (traverse (lookupSet Nothing mempty) =<< deps)+ deps = sequence [ lookupMap lib ps | lib <- fst <$> _libDependencies dep ] run :: ResolveState a -> DepM a run = flip evalTardisT (id, mempty) . unResolve --- | Heuristics:+-- | Dependency resolution is guided by the following: -- -- 1. Always use a newer version when possible --@@ -107,9 +107,11 @@ -- -- 5. Specify an error if a package is not present --+-- 6. Present a solution whenever one exists.+-- -- This doesn't do any package resolution beyond versioning. resolveDependencies :: PackageSet Dependency -> [Dependency] -> DepM [[Dependency]]-resolveDependencies ps = select . getLatest <=< fmap (buildSequence . toList) . saturated+resolveDependencies ps = select . getLatest <=< fmap (buildSequence . toList) . saturate where select = fmap (fmap (fmap snd))- saturated dep = S.unions <$> traverse (saturateDeps ps) dep+ saturate = fmap S.unions . traverse (saturateDeps ps) getLatest = run . traverse (traverse (latest ps))
src/Data/Dependency/Sort.hs view
@@ -1,10 +1,9 @@ module Data.Dependency.Sort ( sortDeps ) where +import Control.Lens import Data.Dependency.Type import Data.Graph-import Lens.Micro-import Lens.Micro.Extras asGraph :: [Dependency] -> (Graph, Vertex -> Dependency) asGraph ds = (f triple, keys)
src/Data/Dependency/Type.hs view
@@ -33,7 +33,6 @@ import Data.Functor.Foldable.TH import Data.List (intercalate) import qualified Data.Map as M-import Data.Semigroup import qualified Data.Set as S import GHC.Generics (Generic) import Text.PrettyPrint.ANSI.Leijen hiding ((<$>), (<>))