lib/providers/base.ex
defmodule ExSecrets.Providers.Base do
@moduledoc """
Base provider provides the basic functions to be implemented by a provider.
This macro is used to implement the basic functions of a provider.
"""
defmacro __using__(_) do
quote do
use GenServer
@behaviour ExSecrets.Providers.Behaviour
def start_link(default) when is_list(default) do
GenServer.start_link(__MODULE__, [], name: get_name(default))
end
defp get_name(opts) do
__MODULE__.process_name()
end
end
end
end