# `mix descripex.manifest`
[🔗](https://github.com/ZenHive/descripex/blob/v1.0.0/lib/mix/tasks/descripex.manifest.ex#L1)

Writes a JSON manifest of Descripex-annotated modules to a file.

The manifest is produced by `Descripex.Manifest.build/1` and contains
version, timestamp, and full function metadata (docs, hints, specs,
signatures) for every public function in the given modules.

## Usage

    # Explicit module list
    mix descripex.manifest MyApp.Funding MyApp.Risk

    # Auto-discover annotated modules in an application
    mix descripex.manifest --app my_app

    # Custom output path
    mix descripex.manifest --output priv/manifest.json MyApp.Funding

    # Pretty-printed JSON
    mix descripex.manifest --pretty MyApp.Funding

## Options

  * `--output` / `-o` — output file path (default: `api_manifest.json`)
  * `--pretty` — indent JSON for readability
  * `--app` — discover all modules in the given OTP app that export `__api__/0`

## Prerequisites

None for default (compact) output — encoding uses the built-in `JSON` module
(Elixir 1.18+). The `--pretty` flag uses the optional `jason` dependency when
available; without it, `--pretty` falls back to compact JSON. Add
`{:jason, "~> 1.4"}` to your deps to enable pretty-printing.

## Module Resolution Order

  1. Module names passed as CLI arguments
  2. `--app` flag (discovers modules exporting `__api__/0`)
  3. `config :descripex, :manifest_modules` application env

# `run`

```elixir
@spec run([String.t()]) :: :ok
```

Run the manifest export task.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
