28 lines
608 B
Elixir
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
|