@@ -40,6 +40,7 @@ data Opt = Filename String
40 | TypeInType
40 | TypeInType
41 | NoCoverage
41 | NoCoverage
43 deriving Eq
44 deriving Eq
45main = do xs <- getArgs
46main = do xs <- getArgs
@@ -51,12 +52,16 @@ runIdris opts =
51 do let inputs = opt getFile opts
52 do let inputs = opt getFile opts
52 let runrepl = not (NoREPL `elem` opts)
53 let runrepl = not (NoREPL `elem` opts)
53 let output = opt getOutput opts
54 let output = opt getOutput opts
55+ let ibcsubdir = opt getIBCSubDir opts
54 when (Ver `elem` opts) $ liftIO showver
56 when (Ver `elem` opts) $ liftIO showver
55 when (Usage `elem` opts) $ liftIO usage
57 when (Usage `elem` opts) $ liftIO usage
56 setREPL runrepl
58 setREPL runrepl
57 setVerbose runrepl
59 setVerbose runrepl
58 when (Verbose `elem` opts) $ setVerbose True
60 when (Verbose `elem` opts) $ setVerbose True
59 mapM_ makeOption opts
61 mapM_ makeOption opts
63+ [] -> setIBCSubDir ""
64+ (d:_) -> setIBCSubDir d
61 when (not (NoPrelude `elem` opts)) $ do x <- loadModule "prelude"
66 when (not (NoPrelude `elem` opts)) $ do x <- loadModule "prelude"
@@ -85,6 +90,10 @@ getOutput :: Opt -> Maybe String
85getOutput (Output str) = Just str
90getOutput (Output str) = Just str
86getOutput _ = Nothing
91getOutput _ = Nothing
93+getIBCSubDir :: Opt -> Maybe String
94+getIBCSubDir (IBCSubDir str) = Just str
95+getIBCSubDir _ = Nothing
88opt :: (Opt -> Maybe a) -> [Opt] -> [a]
97opt :: (Opt -> Maybe a) -> [Opt] -> [a]
89opt = mapMaybe
98opt = mapMaybe
@@ -106,6 +115,7 @@ parseArgs ("--nocoverage":ns) = liftM (NoCoverage : ) (parseArgs ns)
106parseArgs ("--help":ns) = liftM (Usage : ) (parseArgs ns)
115parseArgs ("--help":ns) = liftM (Usage : ) (parseArgs ns)
107parseArgs ("--version":ns) = liftM (Ver : ) (parseArgs ns)
116parseArgs ("--version":ns) = liftM (Ver : ) (parseArgs ns)
108parseArgs ("--verbose":ns) = liftM (Verbose : ) (parseArgs ns)
117parseArgs ("--verbose":ns) = liftM (Verbose : ) (parseArgs ns)
118+parseArgs ("--ibcsubdir":n:ns) = liftM (IBCSubDir n : ) (parseArgs ns)
109parseArgs (n:ns) = liftM (Filename n : ) (parseArgs ns)
119parseArgs (n:ns) = liftM (Filename n : ) (parseArgs ns)
111ver = showVersion version
121ver = showVersion version
@@ -120,9 +130,10 @@ usagemsg = "Idris version " ++ ver ++ "\n" ++
120 "--------------" ++ map (\x -> '-') ver ++ "\n" ++
130 "--------------" ++ map (\x -> '-') ver ++ "\n" ++
121 "Usage: idris [input file] [options]\n" ++
131 "Usage: idris [input file] [options]\n" ++
122 "Options:\n" ++
132 "Options:\n" ++
123− "\t--check Type check only\n" ++
133+ "\t--check Type check only\n" ++
124− "\t-o [file] Generate executable\n" ++
134+ "\t-o [file] Generate executable\n" ++
135+ "\t--ibcsubdir [dir] Write IBC files into sub directory\n" ++
125− "\t--noprelude Don't import the prelude\n" ++
136+ "\t--noprelude Don't import the prelude\n" ++
126− "\t--typeintype Disable universe checking\n" ++
137+ "\t--typeintype Disable universe checking\n" ++
127− "\t--log [level] Set debugging log level\n"
138+ "\t--log [level] Set debugging log level\n"