Самый простой способ - go с пользовательской задачей mix
, вопрос только в том, как на самом деле открыть браузер. Это уже было реализовано в docs
:
defp browser_open(path) do
start_browser_command =
case :os.type do
{:win32, _} ->
"start"
{:unix, :darwin} ->
"open"
{:unix, _} ->
"xdg-open"
end
if System.find_executable(start_browser_command) do
System.cmd(start_browser_command, [path])
else
Mix.raise "Command not found: #{start_browser_command}"
end
end
Все, что осталось сейчас, - это создать пользовательскую задачу, взять хост и порт из конфигурации и вызвать задачу phx.server
внутри него и откройте браузер:
defmodule Mix.Tasks.Hello do
use Mix.Task
def run(_) do
Mix.Task.run("phx.server")
env = Application.fetch_env!(:phoenix_test, PhoenixTestWeb.Endpoint)
browser_open("http://#{env[:url][:host]}:#{env[:http][:port]}")
end
end
Затем вы можете вызвать задачу с помощью mix hello
.