repo_server/lib/repo/repo_lookup.ex
2025-02-22 07:21:10 -06:00

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