59 lines
1.2 KiB
Elixir
59 lines
1.2 KiB
Elixir
defmodule RepoLookup do
|
|
require Logger
|
|
|
|
def is_repo?(string) do
|
|
send(:repo_lookup, {"is_repo?", string, self()})
|
|
|
|
receive do
|
|
{"is_repo", value} ->
|
|
value
|
|
end
|
|
end
|
|
|
|
def repo_contains_pkg?(repo_name, pkg) do
|
|
send(:repo_lookup, {"repo_contains_pkg?", repo_name, pkg, self()})
|
|
|
|
receive do
|
|
{"repo_contains_pkg?", value} ->
|
|
value
|
|
end
|
|
end
|
|
|
|
def alias_check() do
|
|
# Set this process up to allow finding it via the :repo_lookup alias
|
|
|
|
if Enum.member?(Process.registered(), :repo_lookup) do
|
|
# Process.unalias(:repo_lookup)
|
|
end
|
|
|
|
Process.register(self(), :repo_lookup)
|
|
end
|
|
|
|
def start_repo_lookup() do
|
|
Logger.info("Repo spinning.")
|
|
alias_check()
|
|
|
|
Logger.info("Logger process alias registered")
|
|
loop_repo_lookup()
|
|
end
|
|
|
|
def loop_repo_lookup() do
|
|
Logger.info("Repo Lookup loop")
|
|
|
|
receive do
|
|
{"is_repo", value, return_pid} ->
|
|
Logger.info("Checking #{value}")
|
|
send(return_pid, {"is_repo", false})
|
|
|
|
{"repo_contains_pkg?", repo_name, pkg_name, pid}
|
|
->
|
|
Logger.info "Checking repo #{repo_name} for pkg #{pkg_name}"
|
|
send(pid, {"repo_contains_pkg?", false})
|
|
|
|
|
|
end
|
|
|
|
loop_repo_lookup()
|
|
end
|
|
end
|