1module Stackage.InstallInfo
6import qualified Data.Map as Map
7import qualified Data.Set as Set
9import Stackage.HaskellPlatform
10import Stackage.LoadDatabase
11import Stackage.NarrowDatabase
14import Data.Version (showVersion)
16dropExcluded :: BuildSettings
17 -> Map PackageName (VersionRange, Maintainer)
18 -> Map PackageName (VersionRange, Maintainer)
20 Set.foldl' (flip Map.delete) m0 (excludedPackages bs)
22getInstallInfo :: BuildSettings -> IO InstallInfo
23getInstallInfo settings = do
24 hp <- loadHaskellPlatform settings
26 | requireHaskellPlatform settings = Map.union (stablePackages settings) $ identsToRanges (hplibs hp)
27 | otherwise = stablePackages settings
28 allPackages = dropExcluded settings allPackages'
29 let totalCore = extraCore settings `Set.union` Set.map (\(PackageIdentifier p _) -> p) (hpcore hp)
30 pdb <- loadPackageDB totalCore allPackages
31 final <- narrowPackageDB pdb $ Set.fromList $ Map.toList $ Map.map snd $ allPackages
33 putStrLn "Printing build plan to build-plan.log"
34 writeFile "build-plan.log" $ unlines $ map showDep $ Map.toList final
37 , iiPackages = Map.map (\(v, _, m) -> (v, m)) final
38 , iiOptionalCore = Map.fromList $ map (\(PackageIdentifier p v) -> (p, v)) $ Set.toList $ hplibs hp
42showDep :: (PackageName, (Version, [PackageName], Maintainer)) -> String
43showDep (name, (version, deps, Maintainer m)) =
52 , unwords $ map unP deps
55 unP (PackageName p) = p
57iiPackageList :: InstallInfo -> [String]
58iiPackageList = map packageVersionString . Map.toList . Map.map fst . iiPackages
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list