From 33caa2ba29b771a1cc05e15a5f3fe0f4cfc2cdf5 Mon Sep 17 00:00:00 2001 From: Nathan Perry Date: Tue, 28 Jan 2020 20:20:12 -0500 Subject: write config provider --- .../lib/thulani/bot/env_config_provider.ex | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 apps/thulani_bot/lib/thulani/bot/env_config_provider.ex (limited to 'apps/thulani_bot/lib') diff --git a/apps/thulani_bot/lib/thulani/bot/env_config_provider.ex b/apps/thulani_bot/lib/thulani/bot/env_config_provider.ex new file mode 100644 index 0000000..c8815e0 --- /dev/null +++ b/apps/thulani_bot/lib/thulani/bot/env_config_provider.ex @@ -0,0 +1,61 @@ +defmodule Thulani.Bot.EnvConfigProvider do + @behaviour Config.Provider + + @env_vars %{ + database_url: nil, + spreadsheet_id: nil, + sheets_api_key: nil, + steam_api_key: nil, + max_sheet_column: "zz", + default_hist: "5", + max_hist: "30" + } + + def init(prefix) do + "#{String.upcase(prefix)}_" + end + + def load(config, prefix) do + logger_config = + if System.get_env("#{prefix}DEBUG") do + %{ + logger: [level: :debug] + } + else + %{} + end + + result = + %{ + nostrum: [ + token: System.fetch_env!("#{prefix}TOKEN"), + shards: System.get_env("#{prefix}DISCORD_SHARDS", "1") |> Integer.parse() + ], + thulani_bot: thulani_env(prefix) + } + |> Map.merge(logger_config) + + IO.inspect(Config.Reader.merge(config, result)) + end + + defp thulani_env(prefix) do + @env_vars + |> Enum.map(fn {env_var, default} -> + canonical_env_var = + env_var + |> to_string + |> String.upcase() + |> (fn x -> prefix <> x end).() + + value = + canonical_env_var + |> System.get_env(default) + + if value == nil do + raise "required environment variable not found: #{canonical_env_var}" + end + + {env_var, value} + end) + end +end -- cgit v1.3.1