purescript- PureScript Programming Language Compiler

Safe HaskellNone




Make API

data RebuildPolicy Source

Determines when to rebuild a module



Never rebuild this module


Always rebuild this module

renderProgressMessage :: ProgressMessage -> String Source

Render a progress message

data MakeActions m Source

Actions that require implementations when running in "make" mode.

This type exists to make two things abstract:

  • The particular backend being used (Javascript, C++11, etc.)
  • The details of how files are read/written etc.




getInputTimestamp :: ModuleName -> m (Either RebuildPolicy (Maybe UTCTime))

Get the timestamp for the input file(s) for a module. If there are multiple files (.purs and foreign files, for example) the timestamp should be for the most recently modified file.

getOutputTimestamp :: ModuleName -> m (Maybe UTCTime)

Get the timestamp for the output files for a module. This should be the timestamp for the oldest modified file, or Nothing if any of the required output files are missing.

readExterns :: ModuleName -> m (FilePath, Externs)

Read the externs file for a module as a string and also return the actual path for the file.

codegen :: Module Ann -> Environment -> Externs -> SupplyT m ()

Run the code generator for the module and write any required output files.

progress :: ProgressMessage -> m ()

Respond to a progress update.

type Externs = String Source

Generated code for an externs file.

make :: forall m. (Monad m, MonadBaseControl IO m, MonadReader Options m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => MakeActions m -> [Module] -> m Environment Source

Compiles in "make" mode, compiling each module separately to a js files and an externs file

If timestamps have not changed, the externs file can be used to provide the module's types without having to typecheck the module again.

Implementation of Make API using files on disk

runMake :: Options -> Make a -> IO (Either MultipleErrors a, MultipleErrors) Source

Execute a Make monad, returning either errors, or the result of the compile plus any warnings.

buildMakeActions Source


:: FilePath

the output directory

-> Map ModuleName (Either RebuildPolicy FilePath)

a map between module names and paths to the file containing the PureScript module

-> Map ModuleName FilePath

a map between module name and the file containing the foreign javascript for the module

-> Bool

Generate a prefix comment?

-> MakeActions Make 

A set of make actions that read and write modules from the given directory.