module Hix.Managed.Cabal.Installed where

import Distribution.Simple.PackageIndex (InstalledPackageIndex, lookupPackageName)

import qualified Hix.Data.PackageName as PackageName
import Hix.Data.PackageName (PackageName)
import Hix.Data.Version (Version)

installedVersion ::
  InstalledPackageIndex ->
  PackageName ->
  Maybe Version
installedVersion :: InstalledPackageIndex -> PackageName -> Maybe Version
installedVersion InstalledPackageIndex
index PackageName
name =
  (Version, [InstalledPackageInfo]) -> Version
forall a b. (a, b) -> a
fst ((Version, [InstalledPackageInfo]) -> Version)
-> Maybe (Version, [InstalledPackageInfo]) -> Maybe Version
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(Version, [InstalledPackageInfo])]
-> Maybe (Version, [InstalledPackageInfo])
forall a. [a] -> Maybe a
head (InstalledPackageIndex
-> PackageName -> [(Version, [InstalledPackageInfo])]
forall a. PackageIndex a -> PackageName -> [(Version, [a])]
lookupPackageName InstalledPackageIndex
index (PackageName -> PackageName
PackageName.toCabal PackageName
name))