Packages
persist_config
0.1.10
0.4.56
0.4.55
0.4.54
0.4.53
0.4.52
0.4.51
0.4.50
0.4.49
0.4.48
0.4.47
0.4.46
0.4.45
0.4.44
0.4.43
0.4.42
0.4.41
0.4.40
0.4.39
0.4.38
0.4.37
0.4.36
0.4.35
0.4.34
0.4.33
0.4.32
0.4.31
0.4.30
0.4.29
0.4.28
0.4.27
0.4.26
0.4.25
0.4.24
0.4.23
0.4.22
0.4.21
0.4.20
0.4.19
0.4.18
0.4.17
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Persists configurations from given files at compile time.
Current section
Files
Jump to
Current section
Files
lib/persist_config.ex
defmodule PersistConfig do
@moduledoc """
Persists your configuration file and puts the app
in module attribute :app or in one of your choice.
## Usage
```elixir
use PersistConfig
@attr Application.get_env(@app, :attr)
```
```elixir
use PersistConfig, app: :my_app
@my_attr Application.get_env(@my_app, :my_attr)
```
"""
defmacro __using__(options \\ []) do
app = options[:app] || :app
quote bind_quoted: [app: app] do
Mix.Project.config()[:config_path]
|> Mix.Config.read!()
|> Mix.Config.persist()
@external_resource Mix.Project.config()[:config_path] |> Path.expand()
Module.put_attribute(__MODULE__, app, Mix.Project.config()[:app])
end
end
end