@@ -16,12 +16,13 @@ import Language.PureScript qualified as P
1616import Language.PureScript.CST qualified as CST
1717import Language.PureScript.Errors.JSON (JSONResult (.. ), toJSONErrors )
1818import Language.PureScript.Glob (toInputGlobs , PSCGlobs (.. ), warnFileTypeNotFound )
19- import Language.PureScript.Make (buildMakeActions , inferForeignModules , runMake )
19+ import Language.PureScript.Make (buildMakeActions , inferForeignModules , progressWithFile , printProgress , runMake )
2020import Options.Applicative qualified as Opts
2121import SharedCLI qualified
2222import System.Console.ANSI qualified as ANSI
2323import System.Exit (exitSuccess , exitFailure )
24- import System.Directory (getCurrentDirectory )
24+ import System.FilePath ((</>) )
25+ import System.Directory (createDirectoryIfMissing , getCurrentDirectory )
2526import System.IO (hPutStr , stderr , stdout )
2627import System.IO.UTF8 (readUTF8FilesT )
2728
@@ -68,11 +69,18 @@ compile PSCMakeOptions{..} = do
6869 ]
6970 exitFailure
7071 moduleFiles <- readUTF8FilesT input
72+
73+ _ <- createDirectoryIfMissing True pscmOutputDir
74+ let logFile = pscmOutputDir </> " compile.log"
75+ let cleanFile = True
76+
7177 (makeErrors, makeWarnings) <- runMake pscmOpts $ do
7278 ms <- CST. parseModulesFromFiles id moduleFiles
7379 let filePathMap = M. fromList $ map (\ (fp, pm) -> (P. getModuleName $ CST. resPartial pm, Right fp)) ms
7480 foreigns <- inferForeignModules filePathMap
75- let makeActions = buildMakeActions pscmOutputDir filePathMap foreigns pscmUsePrefix
81+ logProgress <- progressWithFile logFile cleanFile
82+ let makeActions = (buildMakeActions pscmOutputDir filePathMap foreigns pscmUsePrefix)
83+ { P. progress = (*>) <$> printProgress <*> logProgress }
7684 P. make_ makeActions (map snd ms)
7785 printWarningsAndErrors (P. optionsVerboseErrors pscmOpts) pscmJSONErrors moduleFiles makeWarnings makeErrors
7886 exitSuccess
0 commit comments