Safe Haskell | None |
---|---|
Language | Haskell98 |
- data RebuildPolicy
- data MakeActions m = MakeActions {
- getInputTimestamp :: ModuleName -> m (Either RebuildPolicy (Maybe UTCTime))
- getOutputTimestamp :: ModuleName -> m (Maybe UTCTime)
- readExterns :: ModuleName -> m (FilePath, String)
- codegen :: Module Ann -> Environment -> SupplyVar -> Externs -> m ()
- progress :: String -> m ()
- type SupplyVar = Integer
- type Externs = String
- make :: forall m. (Functor m, Applicative m, Monad m, MonadReader Options m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => MakeActions m -> [Module] -> m Environment
- newtype Make a = Make {
- unMake :: ReaderT Options (WriterT MultipleErrors (ExceptT MultipleErrors IO)) a
- runMake :: Options -> Make a -> IO (Either MultipleErrors (a, MultipleErrors))
- buildMakeActions :: FilePath -> Map ModuleName (Either RebuildPolicy String) -> Map ModuleName (FilePath, ForeignJS) -> Bool -> MakeActions Make
Make API
data RebuildPolicy Source
Determines when to rebuild a module
RebuildNever | Never rebuild this module |
RebuildAlways | Always rebuild this module |
data MakeActions m Source
Actions that require implementations when running in "make" mode.
MakeActions | |
|
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
A monad for running make actions
Make | |
|
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.
:: 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.