# `GitHoox.Runner`
[🔗](https://github.com/sgerrand/git_hoox/blob/v0.1.0/lib/git_hoox/runner.ex#L1)

Execute hooks for a given stage.

Resolves the file set per stage, filters per hook's `:files` glob,
dispatches serially or in parallel, enforces per-hook timeouts, and
re-stages mutated files when `stage_fixed: true`.

# `hook_outcome`

```elixir
@type hook_outcome() :: {module(), GitHoox.hook_result()}
```

One hook's exit summary.

# `run`

```elixir
@spec run(GitHoox.stage(), [String.t()], String.t() | nil) ::
  :ok | {:error, [hook_outcome()]}
```

Run all hooks configured for `stage`.

`args` are the positional arguments the git shim received (e.g. the
commit message file path for `commit_msg`). `stdin` is the raw input
passed to the shim, used for `pre_push`.

---

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