stackage/Stackage/InstallInfo.hs
Michael Snoyman 4be13587af Code cleanup
2012-11-22 09:27:07 +02:00

29 lines
938 B
Haskell

module Stackage.InstallInfo
( getInstallInfo
, iiPackageList
) where
import Stackage.Types
import Stackage.Util
import Stackage.Config
import Stackage.LoadDatabase
import Stackage.NarrowDatabase
import Stackage.HaskellPlatform
import qualified Data.Map as Map
import qualified Data.Set as Set
getInstallInfo :: IO InstallInfo
getInstallInfo = do
hp <- loadHaskellPlatform
let allPackages = Map.union stablePackages $ identsToRanges (hplibs hp)
let totalCore = extraCore `Set.union` Set.map (\(PackageIdentifier p _) -> p) (hpcore hp)
pdb <- loadPackageDB totalCore allPackages
final <- narrowPackageDB pdb $ Set.fromList $ Map.keys allPackages
return InstallInfo
{ iiCore = totalCore
, iiPackages = final
}
iiPackageList :: InstallInfo -> [String]
iiPackageList = map packageVersionString . Map.toList . iiPackages