git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Add globbing to psci
d157632Phil Freeman
psci/PSCi.hs+7−4
@@ -43,6 +43,7 @@ import System.Console.Haskeline
43import System.Directory (doesFileExist, findExecutable, getHomeDirectory, getCurrentDirectory)
43import System.Directory (doesFileExist, findExecutable, getHomeDirectory, getCurrentDirectory)
44import System.Exit
44import System.Exit
45import System.FilePath (pathSeparator, (</>), isPathSeparator)
45import System.FilePath (pathSeparator, (</>), isPathSeparator)
46+import System.FilePath.Glob (glob)
46import System.Process (readProcessWithExitCode)
47import System.Process (readProcessWithExitCode)
47
48
48import qualified Language.PureScript as P
49import qualified Language.PureScript as P
@@ -490,19 +491,21 @@ consoleIsDefined = any ((== P.ModuleName (map P.ProperName [ "Control", "Monad",
490loop :: PSCiOptions -> IO ()
491loop :: PSCiOptions -> IO ()
491loop PSCiOptions{..} = do
492loop PSCiOptions{..} = do
492 config <- loadUserConfig
493 config <- loadUserConfig
494+ inputFiles <- concat <$> mapM glob psciInputFile
495+ foreignFiles <- concat <$> mapM glob psciForeignInputFiles
493− modulesOrFirstError <- loadAllModules psciInputFile
496+ modulesOrFirstError <- loadAllModules inputFiles
494 case modulesOrFirstError of
497 case modulesOrFirstError of
495 Left errs -> putStrLn (P.prettyPrintMultipleErrors False errs) >> exitFailure
498 Left errs -> putStrLn (P.prettyPrintMultipleErrors False errs) >> exitFailure
496 Right modules -> do
499 Right modules -> do
497 historyFilename <- getHistoryFilename
500 historyFilename <- getHistoryFilename
498 let settings = defaultSettings { historyFile = Just historyFilename }
501 let settings = defaultSettings { historyFile = Just historyFilename }
499 foreignsOrError <- runMake $ do
502 foreignsOrError <- runMake $ do
500− foreignFiles <- forM psciForeignInputFiles (\inFile -> (inFile,) <$> makeIO (const (P.SimpleErrorWrapper $ P.CannotReadFile inFile)) (readFile inFile))
503+ foreignFilesContent <- forM foreignFiles (\inFile -> (inFile,) <$> makeIO (const (P.SimpleErrorWrapper $ P.CannotReadFile inFile)) (readFile inFile))
501− P.parseForeignModulesFromFiles foreignFiles
504+ P.parseForeignModulesFromFiles foreignFilesContent
502 case foreignsOrError of
505 case foreignsOrError of
503 Left errs -> putStrLn (P.prettyPrintMultipleErrors False errs) >> exitFailure
506 Left errs -> putStrLn (P.prettyPrintMultipleErrors False errs) >> exitFailure
504 Right foreigns ->
507 Right foreigns ->
505− flip evalStateT (PSCiState psciInputFile [] modules foreigns [] psciInputNodeFlags) . runInputT (setComplete completion settings) $ do
508+ flip evalStateT (PSCiState inputFiles [] modules foreigns [] psciInputNodeFlags) . runInputT (setComplete completion settings) $ do
506 outputStrLn prologueMessage
509 outputStrLn prologueMessage
507 traverse_ (mapM_ (runPSCI . handleCommand)) config
510 traverse_ (mapM_ (runPSCI . handleCommand)) config
508 modules' <- lift $ gets psciLoadedModules
511 modules' <- lift $ gets psciLoadedModules
purescript.cabal+3−2
@@ -168,7 +168,7 @@ executable psci
168 build-depends: base >=4 && <5, containers -any, directory -any, filepath -any,
168 build-depends: base >=4 && <5, containers -any, directory -any, filepath -any,
169 mtl -any, optparse-applicative >= 0.10.0, parsec -any,
169 mtl -any, optparse-applicative >= 0.10.0, parsec -any,
170 haskeline >= 0.7.0.0, purescript -any, transformers -any,
170 haskeline >= 0.7.0.0, purescript -any, transformers -any,
171− transformers-compat -any, process -any, time -any
171+ transformers-compat -any, process -any, time -any, Glob -any
172
172
173 main-is: Main.hs
173 main-is: Main.hs
174 buildable: True
174 buildable: True
@@ -233,7 +233,8 @@ test-suite psci-tests
233 build-depends: base >=4 && <5, containers -any, directory -any, filepath -any,
233 build-depends: base >=4 && <5, containers -any, directory -any, filepath -any,
234 mtl -any, optparse-applicative >= 0.10.0, parsec -any,
234 mtl -any, optparse-applicative >= 0.10.0, parsec -any,
235 haskeline >= 0.7.0.0, purescript -any, transformers -any,
235 haskeline >= 0.7.0.0, purescript -any, transformers -any,
236− transformers-compat -any, process -any, HUnit -any, time -any
236+ transformers-compat -any, process -any, HUnit -any, time -any,
237+ Glob -any
237 type: exitcode-stdio-1.0
238 type: exitcode-stdio-1.0
238 main-is: Main.hs
239 main-is: Main.hs
239 buildable: True
240 buildable: True