@@ -12,6 +12,7 @@ import Idris.Error
1212import Idris.ErrReverse
1313import Idris.Delaborate
1414import Idris.Docstrings (Docstring, overview, renderDocstring)
15+import Idris.IdrisDoc
1516import Idris.Prover
1617import Idris.Parser
1718import Idris.Primitives
@@ -975,6 +976,24 @@ process h fn (Apropos a) =
975976 isUN (NS n _) = isUN n
976977 isUN _ = False
977978
979+-- IdrisDoc
980+process h fn (MakeDoc s) =
981+ do istate <- getIState
982+ outputTarget <- runIO $ getCurrentDirectory
983+ let trim = dropWhile isSpace
984+ s' = trim s
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
996+
978997classInfo :: ClassInfo -> Idris ()
979998classInfo ci = do iputStrLn "Methods:\n"
980999 mapM_ dumpMethod (class_methods ci)