# compile

## Usage

`prism compile` is used to parse the `tasks.ref(...)` calls, construct the DAG, and generate the manifest.

```
Usage: prism compile [-h] [--full-tb] [-l]

Parse the tasks.ref(...) calls, construct the DAG, and generate the manifest

Options:
  -h, --help         show this help message and exit

General Options:
  --full-tb          Display the full traceback for errors in the project; default is False
  -l, --log-level    Log level, must be one of `info`, `warn`, `error`, or `debug`. Default is `info`
```

Here's what `prism compile` does under the hood.

1. Parses the tasks contained in the `modules/` folder for `tasks.ref(...)` calls.
2. It then takes these function calls and creates the dependency graph. You can visualize this graph using the [`prism graph`](https://docs.runprism.com/v0.1.9rc1/cli/graph) command.
3. It stores the project metadata (e.g., the configuration, the `tasks.ref(...)` calls, the targets, and the [topological sort](https://en.wikipedia.org/wiki/Topological_sorting)) in a `manifest`.

## Example

Here's what the output will look like in Terminal:

```
$ prism compile
--------------------------------------------------------------------------------
<HH:MM:SS> | INFO  | Running with prism v0.1.9rc1...
<HH:MM:SS> | INFO  | Found project directory at /Users/my_first_project
 
<HH:MM:SS> | INFO  | RUNNING EVENT 'module DAG'.............................................................. [RUN]
<HH:MM:SS> | INFO  | FINISHED EVENT 'module DAG'............................................................. [DONE in 0.01s]
 
<HH:MM:SS> | INFO  | Done!
--------------------------------------------------------------------------------
```
