@@ -24,6 +24,7 @@ module Language.PureScript.Make
25 -- * Make API
25 -- * Make API
26 RebuildPolicy(..)
26 RebuildPolicy(..)
27+ , ProgressMessage(..), renderProgressMessage
27 , MakeActions(..)
28 , MakeActions(..)
28 , Externs()
29 , Externs()
@@ -77,6 +78,15 @@ import qualified Language.PureScript.CodeGen.JS as J
77import qualified Language.PureScript.CoreFn as CF
78import qualified Language.PureScript.CoreFn as CF
78import qualified Paths_purescript as Paths
79import qualified Paths_purescript as Paths
81+-- | Progress messages from the make process
83+ = CompilingModule ModuleName
84+ deriving (Show, Eq, Ord)
86+-- | Render a progress message
87+renderProgressMessage :: ProgressMessage -> String
88+renderProgressMessage (CompilingModule mn) = "Compiling " ++ runModuleName mn
80-- | Actions that require implementations when running in "make" mode.
90-- | Actions that require implementations when running in "make" mode.
82-- This type exists to make two things abstract:
92-- This type exists to make two things abstract:
@@ -109,7 +119,7 @@ data MakeActions m = MakeActions {
110 -- Respond to a progress update.
120 -- Respond to a progress update.
112− , progress :: String -> m ()
122+ , progress :: ProgressMessage -> m ()
@@ -158,7 +168,7 @@ make MakeActions{..} ms = do
158 (_, env') <- lift . runCheck' env $ typeCheckModule Nothing m
168 (_, env') <- lift . runCheck' env $ typeCheckModule Nothing m
159 go env' ms'
169 go env' ms'
160 go env ((True, m@(Module coms moduleName' _ exps)) : ms') = do
170 go env ((True, m@(Module coms moduleName' _ exps)) : ms') = do
161− lift $ progress $ "Compiling " ++ runModuleName moduleName'
171+ lift . progress $ CompilingModule moduleName'
162 (checked@(Module _ _ elaborated _), env') <- lift . runCheck' env $ typeCheckModule Nothing m
172 (checked@(Module _ _ elaborated _), env') <- lift . runCheck' env $ typeCheckModule Nothing m
163 checkExhaustiveModule env' checked
173 checkExhaustiveModule env' checked
164 regrouped <- createBindingGroups moduleName' . collapseBindingGroups $ elaborated
174 regrouped <- createBindingGroups moduleName' . collapseBindingGroups $ elaborated
@@ -279,9 +289,7 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
279 foreignFile = outputDir </> filePath </> "foreign.js"
289 foreignFile = outputDir </> filePath </> "foreign.js"
280 prefix = ["Generated by psc version " ++ showVersion Paths.version | usePrefix]
290 prefix = ["Generated by psc version " ++ showVersion Paths.version | usePrefix]
281 js = unlines $ map ("// " ++) prefix ++ [pjs]
291 js = unlines $ map ("// " ++) prefix ++ [pjs]
282− verboseErrorsEnabled <- asks optionsVerboseErrors
283 lift $ do
292 lift $ do
284− when verboseErrorsEnabled $ progress $ "Writing " ++ jsFile
285 writeTextFile jsFile js
293 writeTextFile jsFile js
286 maybe (return ()) (writeTextFile foreignFile . snd) $ mn `M.lookup` foreigns
294 maybe (return ()) (writeTextFile foreignFile . snd) $ mn `M.lookup` foreigns
287 writeTextFile externsFile exts
295 writeTextFile externsFile exts
@@ -305,5 +313,5 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
305 mkdirp :: FilePath -> IO ()
313 mkdirp :: FilePath -> IO ()
306 mkdirp = createDirectoryIfMissing True . takeDirectory
314 mkdirp = createDirectoryIfMissing True . takeDirectory
308− progress :: String -> Make ()
316+ progress :: ProgressMessage -> Make ()
309− progress = liftIO . putStrLn
317+ progress = liftIO . putStrLn . renderProgressMessage