Current section
Files
Jump to
Current section
Files
lib/mix/dev_server.ex
defmodule Mix.Tasks.DevServer do
@moduledoc false
use Mix.Task
def filters(plugs) do
plugs
|> String.split(",")
|> Poison.encode!
end
def options(opts) do
opts
|> String.split(",")
|> Enum.map(&String.split(&1, "="))
|> Enum.map(fn [k, v | _] -> {k, v} end)
|> Enum.into(%{})
|> Poison.encode!()
end
def routes_from_args(args) do
cond do
length(args) == 0 -> []
length(args) < 4 ->
IO.puts "Not enough parameters for args:"
IO.inspect args
[]
true ->
[host, path, plugs, opts | tail] = args
app = %{
"labels" => %{
"heimdall.host" => host,
"heimdall.path" => path,
"heimdall.filters" => filters(plugs),
"heimdall.options" => options(opts)
}
}
[app] ++ routes_from_args(tail)
end
end
def run(args) do
Mix.Config.persist(heimdall: [register_marathon: false])
Mix.Task.run "app.start", []
routes =
args
|> routes_from_args
|> Heimdall.Marathon.BingeWatch.build_routes
|> Heimdall.Marathon.BingeWatch.register_routes
IO.puts "Registered routes:"
IO.inspect routes
:timer.sleep(:infinity)
end
end