@@ -13,6 +13,8 @@
14-----------------------------------------------------------------------------
14-----------------------------------------------------------------------------
16+{-# LANGUAGE TupleSections #-}
16module Main where
18module Main where
18import Control.Monad (unless)
20import Control.Monad (unless)
@@ -24,6 +26,7 @@ import Data.Version (showVersion)
24import Options.Applicative
26import Options.Applicative
25import System.Directory (createDirectoryIfMissing)
27import System.Directory (createDirectoryIfMissing)
26import System.FilePath ((</>))
28import System.FilePath ((</>))
29+import System.FilePath.Glob (glob)
27import System.Exit (exitFailure, exitSuccess)
30import System.Exit (exitFailure, exitSuccess)
28import System.IO (hPutStr, stderr)
31import System.IO (hPutStr, stderr)
@@ -50,13 +53,14 @@ instance Ord SuperMap where
50runModuleName :: P.ModuleName -> String
53runModuleName :: P.ModuleName -> String
51runModuleName (P.ModuleName pns) = intercalate "_" (P.runProperName `map` pns)
54runModuleName (P.ModuleName pns) = intercalate "_" (P.runProperName `map` pns)
53−readInput :: FilePath -> IO (Either P.MultipleErrors [P.Module])
56+readInput :: [FilePath] -> IO (Either P.MultipleErrors [P.Module])
54−readInput filename = do
57+readInput paths = do
55− content <- readFile filename
58+ content <- mapM (\path -> (path, ) <$> readFile path) paths
56− return $ map snd <$> P.parseModulesFromFiles id [(filename, content)]
59+ return $ map snd <$> P.parseModulesFromFiles id content
58compile :: HierarchyOptions -> IO ()
61compile :: HierarchyOptions -> IO ()
59−compile (HierarchyOptions input mOutput) = do
62+compile (HierarchyOptions inputGlob mOutput) = do
63+ input <- glob inputGlob
60 modules <- readInput input
64 modules <- readInput input
61 case modules of
65 case modules of
62 Left errs -> hPutStr stderr (P.prettyPrintMultipleErrors False errs) >> exitFailure
66 Left errs -> hPutStr stderr (P.prettyPrintMultipleErrors False errs) >> exitFailure