···55 field :access_token, String.t()
66 end
7788- def load() do
88+ # Could you define a behavior with different runtime/compiletime callbacks
99+ # with a simple Mod.func call in config which would be an entrypoint
1010+1111+ @app :sower_agent
1212+ @env_prefix "SOWER_AGENT"
1313+1414+ def load(:prod) do
1515+ %__MODULE__{
1616+ access_token: read_env_file!("access_token_file")
1717+ }
1818+ end
1919+2020+ def load(:dev) do
921 %__MODULE__{
1010- access_token:
1111- System.fetch_env!("SOWER_AGENT_ACCESS_TOKEN_FILE") |> File.read!() |> String.trim()
2222+ access_token: Application.fetch_env!(@app, :access_token_file) |> read_file()
1223 }
2424+ end
2525+2626+ defp fetch_env!(name) do
2727+ (@env_prefix <> name) |> String.upcase()
2828+ end
2929+3030+ defp read_env_file!(name) do
3131+ name |> fetch_env!() |> read_file()
3232+ end
3333+3434+ defp read_file(path) do
3535+ path |> File.read!() |> String.trim()
1336 end
1437end