on d8571ea help sign in
stackage/Stackage/InstallInfo.hs
28 lines 970 B history raw
1module Stackage.InstallInfo
2 ( getInstallInfo
3 , iiPackageList
4 ) where
6import qualified Data.Map as Map
7import qualified Data.Set as Set
8import Stackage.Config
9import Stackage.HaskellPlatform
10import Stackage.LoadDatabase
11import Stackage.NarrowDatabase
12import Stackage.Types
13import Stackage.Util
15getInstallInfo :: IO InstallInfo
16getInstallInfo = do
17 hp <- loadHaskellPlatform
18 let allPackages = Map.union stablePackages $ identsToRanges (hplibs hp)
19 let totalCore = extraCore `Set.union` Set.map (\(PackageIdentifier p _) -> p) (hpcore hp)
20 pdb <- loadPackageDB totalCore allPackages
21 final <- narrowPackageDB pdb $ Set.fromList $ Map.keys allPackages
22 return InstallInfo
23 { iiCore = totalCore
24 , iiPackages = final
25 }
27iiPackageList :: InstallInfo -> [String]
28iiPackageList = map packageVersionString . Map.toList . iiPackages