module Hix.Managed.Cabal.Mock.InstalledPackage where import Distribution.InstalledPackageInfo (InstalledPackageInfo (..), emptyInstalledPackageInfo) import Distribution.Package (UnitId, mkUnitId) import qualified Distribution.Simple.PackageIndex as PackageIndex import Distribution.Simple.PackageIndex (InstalledPackageIndex) import qualified Hix.Data.PackageId as PackageId import Hix.Data.PackageId (PackageId) import Hix.Managed.Cabal.Data.Packages (InstalledPackages (InstalledPackages)) import Hix.Pretty (showP) mockUnitId :: PackageId -> UnitId mockUnitId :: PackageId -> UnitId mockUnitId = String -> UnitId mkUnitId (String -> UnitId) -> (PackageId -> String) -> PackageId -> UnitId forall b c a. (b -> c) -> (a -> b) -> a -> c . PackageId -> String forall b a. (Pretty a, IsString b) => a -> b showP installedPackageInfo :: PackageId -> [UnitId] -> InstalledPackageInfo installedPackageInfo :: PackageId -> [UnitId] -> InstalledPackageInfo installedPackageInfo PackageId package [UnitId] depends = InstalledPackageInfo emptyInstalledPackageInfo { sourcePackageId = PackageId.toCabal package, installedUnitId = mockUnitId package, depends } mockInstalledPackageIndex :: InstalledPackages -> InstalledPackageIndex mockInstalledPackageIndex :: InstalledPackages -> InstalledPackageIndex mockInstalledPackageIndex = [InstalledPackageInfo] -> InstalledPackageIndex PackageIndex.fromList ([InstalledPackageInfo] -> InstalledPackageIndex) -> (InstalledPackages -> [InstalledPackageInfo]) -> InstalledPackages -> InstalledPackageIndex forall b c a. (b -> c) -> (a -> b) -> a -> c . ((PackageId, [PackageId]) -> InstalledPackageInfo) -> [(PackageId, [PackageId])] -> [InstalledPackageInfo] forall a b. (a -> b) -> [a] -> [b] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap ((PackageId -> [UnitId] -> InstalledPackageInfo) -> (PackageId, [UnitId]) -> InstalledPackageInfo forall a b c. (a -> b -> c) -> (a, b) -> c uncurry PackageId -> [UnitId] -> InstalledPackageInfo installedPackageInfo ((PackageId, [UnitId]) -> InstalledPackageInfo) -> ((PackageId, [PackageId]) -> (PackageId, [UnitId])) -> (PackageId, [PackageId]) -> InstalledPackageInfo forall b c a. (b -> c) -> (a -> b) -> a -> c . ([PackageId] -> [UnitId]) -> (PackageId, [PackageId]) -> (PackageId, [UnitId]) forall b c a. (b -> c) -> (a, b) -> (a, c) forall (p :: * -> * -> *) b c a. Bifunctor p => (b -> c) -> p a b -> p a c second ((PackageId -> UnitId) -> [PackageId] -> [UnitId] forall a b. (a -> b) -> [a] -> [b] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap PackageId -> UnitId mockUnitId)) ([(PackageId, [PackageId])] -> [InstalledPackageInfo]) -> (InstalledPackages -> [(PackageId, [PackageId])]) -> InstalledPackages -> [InstalledPackageInfo] forall b c a. (b -> c) -> (a -> b) -> a -> c . InstalledPackages -> [(PackageId, [PackageId])] forall a b. Coercible a b => a -> b coerce