portingtools/lib/portingtools/mappings/agent.ex

28 lines
608 B
Elixir

defmodule PortingTools.Mappings.Agent do
use Agent, restart: :transient
require Logger
def start_link(_) do
Agent.start_link(&init/0, name: __MODULE__)
end
def init() do
Logger.info("Reading mappings")
mappings =
File.ls!("mappings")
|> Stream.flat_map(&File.stream!("mappings/#{&1}"))
|> Stream.map(&String.split(&1, ","))
|> Enum.reduce(%{}, fn [remapped, orig | _], map ->
Map.put(map, remapped, orig)
end)
Logger.info("Done reading mappings")
mappings
end
def map(key) do
Agent.get(__MODULE__, &Map.get(&1, key))
end
end