defmodule Mix.Tasks.Nerves.Env do
@moduledoc deprecated: "Tasks from :nerves should be used instead"
use Mix.Task
import Mix.Nerves.IO
@switches [info: :boolean, disable: :boolean]
@impl Mix.Task
def run(argv) do
debug_info("Env Start")
{opts, _, _} = OptionParser.parse(argv, switches: @switches)
if opts[:disable] do
# This is the same code as Nerves.Env.disable/0, but I can't call that
# because we're about to load it immediately below. I also can't call it
# after it's loaded below because the act of compiling the nerves dep
# calls deps.precompile, which causes the system to get compiled unless
# Nerves.Env is disabled, which is what I'm trying to do here. :&
# This could probably be solved by moving Nerves.Env into nerves_bootstrap
System.put_env("NERVES_ENV_DISABLED", "1")
else
System.delete_env("NERVES_ENV_DISABLED")
end
# Ensure Nerves is compiled and bootstrapped in
# If it was already run, this is a noop
Mix.Task.run("nerves.bootstrap")
Nerves.Env.start()
debug_info("Env End")
if opts[:info], do: print_env()
end
defp print_env() do
System.put_env("NERVES_DEBUG", "1")
debug_info("Environment Package List")
case Nerves.Env.packages() do
[] -> Mix.shell().info(" No packages found")
packages -> Enum.each(packages, &print_pkg/1)
end
Mix.Tasks.Nerves.Loadpaths.run([])
end
defp print_pkg(pkg) do
Mix.shell().info("""
Pkg: #{pkg.app}
Vsn: #{pkg.version}
Type: #{pkg.type}
BuildRunner: #{inspect(pkg.build_runner)}
""")
end
end