# `Spark.InfoGenerator`
[🔗](https://github.com/ash-project/spark/blob/v2.7.0/lib/spark/info_generator.ex#L5)

Used to dynamically generate configuration functions for Spark extensions
based on their DSL.

## Usage

```elixir
defmodule MyConfig do
  use Spark.InfoGenerator, extension: MyDslExtension, sections: [:my_section]
end
```

# `options`

```elixir
@type options() :: [extension: module(), sections: [atom()]]
```

# `generate_config_functions`
*macro* 

```elixir
@spec generate_config_functions(module(), [atom()]) :: Macro.t()
```

Given an extension and a list of DSL sections generate individual config
functions for each option.

# `generate_entity_functions`
*macro* 

```elixir
@spec generate_entity_functions(module(), [atom()]) :: Macro.t()
```

Given an extension and a list of DSL sections, generate an entities function
which returns a list of entities.

# `generate_options_functions`
*macro* 

```elixir
@spec generate_options_functions(module(), [atom()]) :: Macro.t()
```

Given an extension and a list of DSL sections, generate an options function
which returns a map of all configured options for a resource (including
defaults).

# `spec_for_type`

---

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