# `Mix.Bonny`
[🔗](https://github.com/coryodaniel/bonny/blob/v1.5.0/lib/mix/bonny.ex#L1)

Mix task helpers

# `add_or_create_with`

```elixir
@spec add_or_create_with(:append | :prepend, binary(), binary(), binary(), binary()) ::
  term()
```

# `app_dir_name`

```elixir
@spec app_dir_name() :: binary()
```

# `app_name`

```elixir
@spec app_name() :: binary()
```

Get the OTP app name

# `append_or_create_with`

```elixir
@spec append_or_create_with(binary(), binary(), binary(), binary()) :: term()
```

Appends `append_content` to `target`. If `target` does not exist, a new
file with `new_file_content` is created.

# `copy`

```elixir
@spec copy(binary(), binary()) :: term()
```

# `ensure_module_name`

Capitalizes the string if it does not begin with a capital letter.

# `error`

# `hyphenated_app_name`

```elixir
@spec hyphenated_app_name() :: binary()
```

Get the OTP app name with dashes

# `no_umbrella!`

```elixir
@spec no_umbrella!() :: any()
```

# `parse_args`

```elixir
@spec parse_args([binary()], Keyword.t(), Keyword.t()) ::
  {Keyword.t(), [binary()], [{binary(), nil | binary()}]}
```

Parse CLI input

# `prepend_or_create_with`

```elixir
@spec prepend_or_create_with(binary(), binary(), binary(), binary()) :: term()
```

Prepends `append_content` to `target`. If `target` does not exist, a new
file with `new_file_content` is created.

# `render`

```elixir
@spec render(binary(), binary()) :: term()
```

Render text to a file.

Special handling for the path "-" will render to STDOUT

# `render_template`

```elixir
@spec render_template(binary(), binary(), keyword()) :: term()
```

# `template`

```elixir
@spec template(binary()) :: binary()
```

---

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