on master help sign in
Refuse to work if listed packages are not installed.
71b49d3Jan de Muijnck-Hughes
src/Idris/Main.hs+13
@@ -37,6 +37,7 @@ import Control.Monad
37import Control.Monad.Trans (lift)
37import Control.Monad.Trans (lift)
38import Control.Monad.Trans.Except (runExceptT)
38import Control.Monad.Trans.Except (runExceptT)
39import Control.Monad.Trans.State.Strict (execStateT)
39import Control.Monad.Trans.State.Strict (execStateT)
40+import Data.List
40import Data.Maybe
41import Data.Maybe
41import Prelude hiding (id, (.), (<$>))
42import Prelude hiding (id, (.), (<$>))
42import System.Console.Haskeline as H
43import System.Console.Haskeline as H
@@ -138,9 +139,21 @@ idrisMain opts =
138
139
139 setNoBanner nobanner
140 setNoBanner nobanner
140
141
142+ -- Check if listed packages are actually installed
143+
144+ idrisCatch (do ipkgs <- runIO $ getIdrisInstalledPackages
145+ let diff_pkgs = (\\) pkgdirs ipkgs
146+
147+ when (not $ null diff_pkgs) $ do
148+ iputStrLn "The following packages were specified but cannot be found:"
149+ iputStrLn $ unlines $ map (\x -> unwords ["-", x]) diff_pkgs
150+ runIO $ exitWith (ExitFailure 1))
151+ (\e -> return ())
152+
141 when (not (NoBasePkgs `elem` opts)) $ do
153 when (not (NoBasePkgs `elem` opts)) $ do
142 addPkgDir "prelude"
154 addPkgDir "prelude"
143 addPkgDir "base"
155 addPkgDir "base"
156+
144 mapM_ addPkgDir pkgdirs
157 mapM_ addPkgDir pkgdirs
145 elabPrims
158 elabPrims
146 when (not (NoBuiltins `elem` opts)) $ do x <- loadModule "Builtins" (IBC_REPL True)
159 when (not (NoBuiltins `elem` opts)) $ do x <- loadModule "Builtins" (IBC_REPL True)