@@ -6,21 +6,17 @@ module Init
66
77
88import Prelude hiding (init)
9−import Control.Monad.Trans (liftIO)
109import qualified Data.Map as Map
1110import qualified System.Directory as Dir
1211
13−import qualified Deps.Registry as Registry
1412import qualified Deps.Solver as Solver
1513import qualified Elm.Constraint as Con
1614import qualified Elm.Outline as Outline
1715import qualified Elm.Package as Pkg
1816import qualified Elm.Version as V
19−import qualified Http
2017import qualified Reporting
2118import qualified Reporting.Doc as D
2219import qualified Reporting.Exit as Exit
23−import qualified Stuff
2420
2521
2622
@@ -68,20 +64,24 @@ question =
6864
6965init :: IO (Either Exit.Init ())
7066init =
71− do cache <- Stuff.getPackageCache
72− manager <- Http.getManager
73− eregistry <- Registry.latest manager cache
74− case eregistry of
75− Left rp ->
76− return (Left (Exit.InitRegistryProblem rp))
77−
78− Right registry ->
79− do result <- Solver.online cache manager registry defaults
67+ do eitherEnv <- Solver.initEnv
68+ case eitherEnv of
69+ Left problem ->
70+ return (Left (Exit.InitRegistryProblem problem))
71+
72+ Right (Solver.Env cache _ connection registry) ->
73+ do result <- Solver.verify cache connection registry defaults
8074 case result of
81− Left _ ->
75+ Solver.Err exit ->
76+ return (Left (Exit.InitSolverProblem exit))
77+
78+ Solver.NoSolution ->
8279 return (Left (Exit.InitNoSolution (Map.keys defaults)))
8380
84− Right details ->
81+ Solver.NoOfflineSolution ->
82+ return (Left (Exit.InitNoOfflineSolution (Map.keys defaults)))
83+
84+ Solver.Ok details ->
8585 let
8686 solution = Map.map (\(Solver.Details vsn _) -> vsn) details
8787 directs = Map.intersection solution defaults