Current section

Files

Jump to
igniter_new lib private shared_utils.ex
Raw

lib/private/shared_utils.ex

defmodule Installer.Lib.Private.SharedUtils do
@moduledoc false
@doc false
def extract_positional_args(argv) do
argv
|> Enum.flat_map(&String.split(&1, "=", parts: 2, trim: true))
|> do_extract_positional_args([], [])
end
def do_extract_positional_args([], argv, positional), do: {argv, positional}
def do_extract_positional_args(argv, got_argv, positional) do
case OptionParser.next(argv, switches: []) do
{_, _key, true, rest} ->
do_extract_positional_args(
rest,
got_argv ++ [Enum.at(argv, 0)],
positional
)
{_, _key, _value, rest} ->
do_extract_positional_args(
rest,
got_argv ++ [Enum.at(argv, 0), Enum.at(argv, 1)],
positional
)
{:error, rest} ->
[first | rest] = rest
do_extract_positional_args(rest, got_argv, positional ++ [first])
end
end
def reevaluate_mix_exs() do
old_undefined = Code.get_compiler_option(:no_warn_undefined)
old_relative_paths = Code.get_compiler_option(:relative_paths)
old_ignore_module_conflict = Code.get_compiler_option(:ignore_module_conflict)
try do
Code.compiler_options(
relative_paths: false,
no_warn_undefined: :all,
ignore_module_conflict: true
)
_ = Code.compile_file("mix.exs")
after
Code.compiler_options(
relative_paths: old_relative_paths,
no_warn_undefined: old_undefined,
ignore_module_conflict: old_ignore_module_conflict
)
end
end
end