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 sourcePackageId = PackageId -> PackageId PackageId.toCabal PackageId package, installedUnitId :: UnitId installedUnitId = PackageId -> UnitId mockUnitId PackageId package, [UnitId] depends :: [UnitId] depends :: [UnitId] 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