@@ -1200,6 +1200,8 @@ parseArgs ("--mvn":ns) = OutputTy MavenProject : (parseArgs ns)
1200parseArgs ("--dumpdefuns":n:ns) = DumpDefun n : (parseArgs ns)
1200parseArgs ("--dumpdefuns":n:ns) = DumpDefun n : (parseArgs ns)
1201parseArgs ("--dumpcases":n:ns) = DumpCases n : (parseArgs ns)
1201parseArgs ("--dumpcases":n:ns) = DumpCases n : (parseArgs ns)
1202parseArgs ("--codegen":n:ns) = UseCodegen (parseCodegen n) : (parseArgs ns)
1202parseArgs ("--codegen":n:ns) = UseCodegen (parseCodegen n) : (parseArgs ns)
1203+parseArgs ("--eval":expr:ns) = EvalExpr expr : parseArgs ns
1204+parseArgs ("-e":expr:ns) = EvalExpr expr : parseArgs ns
1203parseArgs ["--exec"] = InterpretScript "Main.main" : []
1205parseArgs ["--exec"] = InterpretScript "Main.main" : []
1204parseArgs ("--exec":expr:ns) = InterpretScript expr : parseArgs ns
1206parseArgs ("--exec":expr:ns) = InterpretScript expr : parseArgs ns
1205parseArgs (('-':'X':extName):ns) = case maybeRead extName of
1207parseArgs (('-':'X':extName):ns) = case maybeRead extName of
@@ -1372,13 +1374,15 @@ idrisMain opts =
1372 x:y:xs -> do iputStrLn "More than one interpreter expression found."
1374 x:y:xs -> do iputStrLn "More than one interpreter expression found."
1373 runIO $ exitWith (ExitFailure 1)
1375 runIO $ exitWith (ExitFailure 1)
1374 [expr] -> return (Just expr)
1376 [expr] -> return (Just expr)
1377+ let immediate = opt getEvalExpr opts
1375 when (DefaultTotal `elem` opts) $ do i <- getIState
1379 when (DefaultTotal `elem` opts) $ do i <- getIState
1376 putIState (i { default_total = True })
1380 putIState (i { default_total = True })
1377 setColourise $ not quiet && last (True : opt getColour opts)
1381 setColourise $ not quiet && last (True : opt getColour opts)
1378 when (not runrepl) $ setWidth InfinitelyWide
1382 when (not runrepl) $ setWidth InfinitelyWide
1379 mapM_ addLangExt (opt getLanguageExt opts)
1383 mapM_ addLangExt (opt getLanguageExt opts)
1380 setREPL runrepl
1384 setREPL runrepl
1381− setQuiet (quiet || isJust script)
1385+ setQuiet (quiet || isJust script || not (null immediate))
1382 setIdeSlave idesl
1386 setIdeSlave idesl
1383 setVerbose verbose
1387 setVerbose verbose
1384 setCmdLine opts
1388 setCmdLine opts
@@ -1406,7 +1410,13 @@ idrisMain opts =
1406 return ()
1410 return ()
1407 when (not (NoPrelude `elem` opts)) $ do x <- loadModule stdout "Prelude"
1411 when (not (NoPrelude `elem` opts)) $ do x <- loadModule stdout "Prelude"
1408 return ()
1412 return ()
1409− when (runrepl && not quiet && not idesl && not (isJust script) && not nobanner) $ iputStrLn banner
1413+ when (runrepl &&
1416+ not (isJust script) &&
1411 orig <- getIState
1421 orig <- getIState
1412 loadInputs stdout inputs
1422 loadInputs stdout inputs
@@ -1422,6 +1432,19 @@ idrisMain opts =
1422 (o:_) -> idrisCatch (process stdout "" (Compile cgn o))
1432 (o:_) -> idrisCatch (process stdout "" (Compile cgn o))
1423 (\e -> do ist <- getIState ; iputStrLn $ pshow ist e)
1433 (\e -> do ist <- getIState ; iputStrLn $ pshow ist e)
1437+ exprs -> do setWidth InfinitelyWide
1438+ mapM_ (\str -> do ist <- getIState
1440+ case parseExpr ist str of
1441+ Failure err -> do iputStrLn $ show (fixColour c err)
1442+ runIO $ exitWith (ExitFailure 1)
1443+ Success e -> process stdout "" (Eval e))
1445+ runIO $ exitWith ExitSuccess
1425 case script of
1448 case script of
1426 Nothing -> return ()
1449 Nothing -> return ()
1427 Just expr -> execScript expr
1450 Just expr -> execScript expr
@@ -1558,6 +1581,10 @@ getExecScript :: Opt -> Maybe String
1558getExecScript (InterpretScript expr) = Just expr
1581getExecScript (InterpretScript expr) = Just expr
1559getExecScript _ = Nothing
1582getExecScript _ = Nothing
1584+getEvalExpr :: Opt -> Maybe String
1585+getEvalExpr (EvalExpr expr) = Just expr
1586+getEvalExpr _ = Nothing
1561getOutputTy :: Opt -> Maybe OutputType
1588getOutputTy :: Opt -> Maybe OutputType
1562getOutputTy (OutputTy t) = Just t
1589getOutputTy (OutputTy t) = Just t
1563getOutputTy _ = Nothing
1590getOutputTy _ = Nothing