@@ -41,6 +41,7 @@ data Opt = Filename String
41 | NoCoverage
41 | NoCoverage
43 | IBCSubDir String
43 | IBCSubDir String
44 deriving Eq
45 deriving Eq
46main = do xs <- getArgs
47main = do xs <- getArgs
@@ -53,6 +54,7 @@ runIdris opts =
53 let runrepl = not (NoREPL `elem` opts)
54 let runrepl = not (NoREPL `elem` opts)
54 let output = opt getOutput opts
55 let output = opt getOutput opts
55 let ibcsubdir = opt getIBCSubDir opts
56 let ibcsubdir = opt getIBCSubDir opts
57+ let importdirs = opt getImportDir opts
56 when (Ver `elem` opts) $ liftIO showver
58 when (Ver `elem` opts) $ liftIO showver
57 when (Usage `elem` opts) $ liftIO usage
59 when (Usage `elem` opts) $ liftIO usage
58 setREPL runrepl
60 setREPL runrepl
@@ -62,6 +64,7 @@ runIdris opts =
62 case ibcsubdir of
64 case ibcsubdir of
63 [] -> setIBCSubDir ""
65 [] -> setIBCSubDir ""
64 (d:_) -> setIBCSubDir d
66 (d:_) -> setIBCSubDir d
67+ setImportDirs importdirs
66 when (not (NoPrelude `elem` opts)) $ do x <- loadModule "prelude"
69 when (not (NoPrelude `elem` opts)) $ do x <- loadModule "prelude"
@@ -94,6 +97,10 @@ getIBCSubDir :: Opt -> Maybe String
94getIBCSubDir (IBCSubDir str) = Just str
97getIBCSubDir (IBCSubDir str) = Just str
95getIBCSubDir _ = Nothing
98getIBCSubDir _ = Nothing
100+getImportDir :: Opt -> Maybe String
101+getImportDir (ImportDir str) = Just str
102+getImportDir _ = Nothing
97opt :: (Opt -> Maybe a) -> [Opt] -> [a]
104opt :: (Opt -> Maybe a) -> [Opt] -> [a]
98opt = mapMaybe
105opt = mapMaybe
@@ -116,6 +123,7 @@ parseArgs ("--help":ns) = liftM (Usage : ) (parseArgs ns)
116parseArgs ("--version":ns) = liftM (Ver : ) (parseArgs ns)
123parseArgs ("--version":ns) = liftM (Ver : ) (parseArgs ns)
117parseArgs ("--verbose":ns) = liftM (Verbose : ) (parseArgs ns)
124parseArgs ("--verbose":ns) = liftM (Verbose : ) (parseArgs ns)
118parseArgs ("--ibcsubdir":n:ns) = liftM (IBCSubDir n : ) (parseArgs ns)
125parseArgs ("--ibcsubdir":n:ns) = liftM (IBCSubDir n : ) (parseArgs ns)
126+parseArgs ("-i":n:ns) = liftM (ImportDir n : ) (parseArgs ns)
119parseArgs (n:ns) = liftM (Filename n : ) (parseArgs ns)
127parseArgs (n:ns) = liftM (Filename n : ) (parseArgs ns)
121ver = showVersion version
129ver = showVersion version
@@ -132,6 +140,7 @@ usagemsg = "Idris version " ++ ver ++ "\n" ++
132 "Options:\n" ++
140 "Options:\n" ++
133 "\t--check Type check only\n" ++
141 "\t--check Type check only\n" ++
134 "\t-o [file] Generate executable\n" ++
142 "\t-o [file] Generate executable\n" ++
143+ "\t-i [dir] Add directory to the list of import paths\n" ++
135 "\t--ibcsubdir [dir] Write IBC files into sub directory\n" ++
144 "\t--ibcsubdir [dir] Write IBC files into sub directory\n" ++
136 "\t--noprelude Don't import the prelude\n" ++
145 "\t--noprelude Don't import the prelude\n" ++
137 "\t--typeintype Disable universe checking\n" ++
146 "\t--typeintype Disable universe checking\n" ++