# `ExGuard.Guard`
[🔗](https://github.com/slashmili/ex_guard/blob/v1.7.0/lib/ex_guard/guard.ex#L1)

Users use functions in this module to build config files.

    guard("test")
    |> command("mix text --color")
    |> watch(~r{\.(ex|exs)$})
    |> notification(:auto)

# `command`

Sets command for given guard config.

    guard("test")
    |> command("mix text --color")

# `execute`

Executes the command for a guard config.

If files is a list, append them to guard.cmd and executes it.

# `guard`

Creates ExGuard config.

    guard("test")

Options:

  * `:run_on_start`, set this option If you want to run the command when `mix guard` has been executed
  * `:umbrella_app`, set this option If you are running guard on the main directory of an umbrella project and using `watch` command to match changed filed with test

    guard("test", run_on_start: true, umbrella_app: true)

# `ignore`

It can be used to exclude files and directories from the set of files being watched.

    guard("text files")
    |> ignore(~r/\.txt$/)

# `notification`

Sets notification for given guard config.
By default notification is on.

    guard("test")
    |> notification(:auto)

To turn off the notification set it to `:off`
    guard("not notification")
    |> notification(:off)

# `notify`

notifies the result

# `watch`

Sets watch pattern for given guard config.

To watch all Elixir and Erlang files set:
    guard("Elixir/Erlang files")
    |> watch(~r{\\.(erl|ex|exs|eex|xrl|yrl)\\z}i)

To only execute the command for specific files use:
    guard("execute specific tests")
    |> watch({~r{lib/(?<dir>.+)/(?<file>.+).ex$}, fn(m) -> "test/#{m["dir"]}/#{m["file"]}_test.exs" end})

---

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