@@ -24,6 +24,7 @@ module Language.PureScript.Make
2424 (
2525 -- * Make API
2626 RebuildPolicy(..)
27+ , ProgressMessage(..), renderProgressMessage
2728 , MakeActions(..)
2829 , Externs()
2930 , make
@@ -77,6 +78,15 @@ import qualified Language.PureScript.CodeGen.JS as J
7778import qualified Language.PureScript.CoreFn as CF
7879import qualified Paths_purescript as Paths
7980
81+-- | Progress messages from the make process
82+data ProgressMessage
83+ = CompilingModule ModuleName
84+ deriving (Show, Eq, Ord)
85+
86+-- | Render a progress message
87+renderProgressMessage :: ProgressMessage -> String
88+renderProgressMessage (CompilingModule mn) = "Compiling " ++ runModuleName mn
89+
8090-- | Actions that require implementations when running in "make" mode.
8191--
8292-- This type exists to make two things abstract:
@@ -109,7 +119,7 @@ data MakeActions m = MakeActions {
109119 -- |
110120 -- Respond to a progress update.
111121 --
112− , progress :: String -> m ()
122+ , progress :: ProgressMessage -> m ()
113123 }
114124
115125-- |
@@ -158,7 +168,7 @@ make MakeActions{..} ms = do
158168 (_, env') <- lift . runCheck' env $ typeCheckModule Nothing m
159169 go env' ms'
160170 go env ((True, m@(Module coms moduleName' _ exps)) : ms') = do
161− lift $ progress $ "Compiling " ++ runModuleName moduleName'
171+ lift . progress $ CompilingModule moduleName'
162172 (checked@(Module _ _ elaborated _), env') <- lift . runCheck' env $ typeCheckModule Nothing m
163173 checkExhaustiveModule env' checked
164174 regrouped <- createBindingGroups moduleName' . collapseBindingGroups $ elaborated
@@ -279,9 +289,7 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
279289 foreignFile = outputDir </> filePath </> "foreign.js"
280290 prefix = ["Generated by psc version " ++ showVersion Paths.version | usePrefix]
281291 js = unlines $ map ("// " ++) prefix ++ [pjs]
282− verboseErrorsEnabled <- asks optionsVerboseErrors
283292 lift $ do
284− when verboseErrorsEnabled $ progress $ "Writing " ++ jsFile
285293 writeTextFile jsFile js
286294 maybe (return ()) (writeTextFile foreignFile . snd) $ mn `M.lookup` foreigns
287295 writeTextFile externsFile exts
@@ -305,5 +313,5 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
305313 mkdirp :: FilePath -> IO ()
306314 mkdirp = createDirectoryIfMissing True . takeDirectory
307315
308− progress :: String -> Make ()
309− progress = liftIO . putStrLn
316+ progress :: ProgressMessage -> Make ()
317+ progress = liftIO . putStrLn . renderProgressMessage