lib/mix/tasks/server.ex

defmodule Mix.Tasks.Francis.Server do
  use Mix.Task

  alias Mix.Tasks.Run

  @shortdoc "Starts Francis server"

  @moduledoc """
  Starts the application by configuring all endpoints servers to run.

  Note: to start the endpoint without using this mix task you must set
  `server: true` in your `Phoenix.Endpoint` configuration.

  ## Command line options

  Task accepts the same command-line options as `mix run`.

  The `--no-halt` flag is automatically added.
  """

  @impl true
  def run(args), do: Run.run(args ++ run_args())

  defp iex_running?, do: Code.ensure_loaded?(IEx) and IEx.started?()

  defp run_args, do: if(iex_running?(), do: [], else: ["--no-halt"])
end