3import System.Console.Readline
5import System.Environment
9import Control.Monad.State
12import Core.ShellParser
22import Idris.Primitives
25-- Main program reads command line options, parses the main program, and gets
28data Opt = Filename String
35main = do xs <- getArgs
37 execStateT (runIdris opts) idrisInit
39runIdris :: [Opt] -> Idris ()
41 do let inputs = opt getFile opts
44 when (not (NoPrelude `elem` opts)) $ loadModule "prelude"
45 mapM_ loadModule inputs
46 when (not (NoREPL `elem` opts)) $ repl
48 makeOption (OLogging i) = setLogLevel i
49 makeOption _ = return ()
51getFile :: Opt -> Maybe String
52getFile (Filename str) = Just str
55opt :: (Opt -> Maybe a) -> [Opt] -> [a]
58usage = do putStrLn "You're doing it wrong"
59 exitWith (ExitFailure 1)
61parseArgs :: [String] -> IO [Opt]
62parseArgs [] = return []
63parseArgs ("--log":lvl:ns) = liftM (OLogging (read lvl) : ) (parseArgs ns)
64parseArgs ("--noprelude":ns) = liftM (NoPrelude : ) (parseArgs ns)
65parseArgs ("--check":ns) = liftM (NoREPL : ) (parseArgs ns)
66parseArgs (n:ns) = liftM (Filename n : ) (parseArgs ns)
70 = do f <- readFile "test.mi"
75 case checkProgram emptyContext defs of
76 OK ctxt -> do print (toAlist ctxt)
77 runShell (initState ctxt)
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