@@ -26,16 +26,21 @@ import qualified System.IO.UTF8 as U
2626import System.Console.CmdTheLine
2727import System.Exit (exitSuccess, exitFailure)
2828
29−docgen :: FilePath -> Bool -> IO ()
30−docgen input showHierarchy = do
29+docgen :: Bool -> [FilePath] -> IO ()
30+docgen showHierarchy input = do
31+ ms <- mapM parseFile (nub input)
32+ U.putStrLn . runDocs $ (renderModules showHierarchy) (concat ms)
33+ exitSuccess
34+
35+parseFile :: FilePath -> IO [P.Module]
36+parseFile input = do
3137 text <- U.readFile input
3238 case P.runIndentParser input P.parseModules text of
3339 Left err -> do
3440 U.print err
3541 exitFailure
3642 Right ms -> do
37− U.putStrLn . runDocs $ (renderModules showHierarchy) ms
38− exitSuccess
43+ return ms
3944
4045type Docs = Writer [String] ()
4146
@@ -191,14 +196,14 @@ isTypeInstanceDeclaration P.TypeInstanceDeclaration{} = True
191196isTypeInstanceDeclaration (P.PositionedDeclaration _ d) = isTypeInstanceDeclaration d
192197isTypeInstanceDeclaration _ = False
193198
194−inputFile :: Term FilePath
195−inputFile = value $ pos 0 "input.ps" $ posInfo { posDoc = "The input .ps file" }
199+inputFiles :: Term [FilePath]
200+inputFiles = value $ posAny [] $ posInfo { posName = "file(s)", posDoc = "The input .purs file(s)" }
196201
197202includeHeirarcy :: Term Bool
198203includeHeirarcy = value $ flag $ (optInfo [ "h", "hierarchy-images" ]) { optDoc = "Include markdown for type class hierarchy images in the output." }
199204
200205term :: Term (IO ())
201−term = docgen <$> inputFile <*> includeHeirarcy
206+term = docgen <$> includeHeirarcy <*> inputFiles
202207
203208termInfo :: TermInfo
204209termInfo = defTI