git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Accept multiple source files
60dbe19Gary Burgess
docgen/Main.hs+12−7
@@ -26,16 +26,21 @@ import qualified System.IO.UTF8 as U
26import System.Console.CmdTheLine
26import System.Console.CmdTheLine
27import System.Exit (exitSuccess, exitFailure)
27import System.Exit (exitSuccess, exitFailure)
28
28
29−docgen :: FilePath -> Bool -> IO ()
29+docgen :: Bool -> [FilePath] -> IO ()
30−docgen input showHierarchy = do
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
31 text <- U.readFile input
37 text <- U.readFile input
32 case P.runIndentParser input P.parseModules text of
38 case P.runIndentParser input P.parseModules text of
33 Left err -> do
39 Left err -> do
34 U.print err
40 U.print err
35 exitFailure
41 exitFailure
36 Right ms -> do
42 Right ms -> do
37− U.putStrLn . runDocs $ (renderModules showHierarchy) ms
43+ return ms
38− exitSuccess
39
44
40type Docs = Writer [String] ()
45type Docs = Writer [String] ()
41
46
@@ -191,14 +196,14 @@ isTypeInstanceDeclaration P.TypeInstanceDeclaration{} = True
191isTypeInstanceDeclaration (P.PositionedDeclaration _ d) = isTypeInstanceDeclaration d
196isTypeInstanceDeclaration (P.PositionedDeclaration _ d) = isTypeInstanceDeclaration d
192isTypeInstanceDeclaration _ = False
197isTypeInstanceDeclaration _ = False
193
198
194−inputFile :: Term FilePath
199+inputFiles :: Term [FilePath]
195−inputFile = value $ pos 0 "input.ps" $ posInfo { posDoc = "The input .ps file" }
200+inputFiles = value $ posAny [] $ posInfo { posName = "file(s)", posDoc = "The input .purs file(s)" }
196
201
197includeHeirarcy :: Term Bool
202includeHeirarcy :: Term Bool
198includeHeirarcy = value $ flag $ (optInfo [ "h", "hierarchy-images" ]) { optDoc = "Include markdown for type class hierarchy images in the output." }
203includeHeirarcy = value $ flag $ (optInfo [ "h", "hierarchy-images" ]) { optDoc = "Include markdown for type class hierarchy images in the output." }
199
204
200term :: Term (IO ())
205term :: Term (IO ())
201−term = docgen <$> inputFile <*> includeHeirarcy
206+term = docgen <$> includeHeirarcy <*> inputFiles
202
207
203termInfo :: TermInfo
208termInfo :: TermInfo
204termInfo = defTI
209termInfo = defTI