purescript-0.7.2.1: PureScript Programming Language Compiler

Safe HaskellNone
LanguageHaskell98

Language.PureScript.Make

Contents

Description

 

Synopsis

Make API

data RebuildPolicy Source

Determines when to rebuild a module

Constructors

RebuildNever

Never rebuild this module

RebuildAlways

Always rebuild this module

data MakeActions m Source

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

Constructors

MakeActions 

Fields

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, String)

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

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

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

progress :: String -> m ()

Respond to a progress update.

type SupplyVar = Integer Source

A value to be used in the Supply monad.

type Externs = String Source

Generated code for an externs file.

make :: forall m. (Functor m, Applicative m, Monad 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

Arguments

:: FilePath

the output directory

-> Map ModuleName (Either RebuildPolicy String)

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

-> Map ModuleName (FilePath, ForeignJS)

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.