# Copyright(c) 2015-2023 ACCESS CO., LTD. All rights reserved.
use Croma
defmodule AntikytheraLocal.NodeName do
defun get() :: atom do
# The hostname part must contain "." as we are using "-name" instead of "-sname"
# when starting distributed Erlang nodes (see also `rel/env.sh.eex`).
# On macOS, the output of `hostname -f` might have no ".",
# which prohibits the release script from sending RPC commands to a running release.
# We avoid the trouble by appending ".local" to the node name.
h0 = AntikytheraCore.Cmd.hostname()
h1 = if String.contains?(h0, "."), do: h0, else: h0 <> ".local"
# `String.to_atom` is safe because this module is under `AntikytheraLocal`
# credo:disable-for-next-line Credo.Check.Warning.UnsafeToAtom
String.to_atom("antikythera@" <> h1)
end
end