@@ -12,6 +12,7 @@ import Idris.Error
12import Idris.ErrReverse
12import Idris.ErrReverse
13import Idris.Delaborate
13import Idris.Delaborate
14import Idris.Docstrings (Docstring, overview, renderDocstring)
14import Idris.Docstrings (Docstring, overview, renderDocstring)
15import Idris.Prover
16import Idris.Prover
16import Idris.Parser
17import Idris.Parser
17import Idris.Primitives
18import Idris.Primitives
@@ -975,6 +976,24 @@ process h fn (Apropos a) =
975 isUN (NS n _) = isUN n
976 isUN (NS n _) = isUN n
976 isUN _ = False
977 isUN _ = False
980+process h fn (MakeDoc s) =
981+ do istate <- getIState
982+ outputTarget <- runIO $ getCurrentDirectory
983+ let trim = dropWhile isSpace
985+ (trace, s'') = case (stripPrefix "notrace" s') of Just x -> (False, trim x)
986+ Nothing -> (True, s')
987+ target = let (front, back) = span (not . isSpace) s''
988+ in if front == "ns" then Namespace (trim back)
989+ else if front == "dir" then Dir (trim back)
990+ else if null s'' then Dir outputTarget
991+ else Namespace (s'')
992+ result <- runIO $ generateDocs istate target outputTarget trace
993+ case result of Right _ -> iputStrLn "IdrisDoc generated"
994+ Left err -> let u = "Usage: :mkdoc [notrace] [ns | dir] [TARGET]"
995+ in iPrintError err ++ "\n" ++ u
978classInfo :: ClassInfo -> Idris ()
997classInfo :: ClassInfo -> Idris ()
979classInfo ci = do iputStrLn "Methods:\n"
998classInfo ci = do iputStrLn "Methods:\n"
980 mapM_ dumpMethod (class_methods ci)
999 mapM_ dumpMethod (class_methods ci)