Skip to content

Commit cb2eb7d

Browse files
committed
Add deprecation warnings for old escript options
1 parent 1857267 commit cb2eb7d

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

lib/mix/lib/mix/tasks/escriptize.ex

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,31 @@ defmodule Mix.Tasks.Escriptize do
8080
escriptize(Mix.Project.config, opts[:force])
8181
end
8282

83+
84+
@deprecated_opts [
85+
:escript_main_module, :escript_name, :escript_path, :escript_app,
86+
:escript_embed_elixir, :escript_embed_extra_apps, :escript_shebang,
87+
:escript_comment, :escript_mu_args, ]
88+
89+
@prefix_len String.length("escript_")
90+
91+
defp collect_deprecated_opts(project) do
92+
Enum.reduce(@deprecated_opts, [], fn name, acc ->
93+
if Keyword.has_key?(project, name) do
94+
IO.puts :stderr, "Option #{inspect name} is deprecated. " <>
95+
"Use the new `:escript` option that takes a keyword list instead."
96+
new_name =
97+
Atom.to_string(name) |> String.slice(@prefix_len, 100) |> String.to_atom()
98+
[{new_name, project[name]}|acc]
99+
else
100+
acc
101+
end
102+
end)
103+
end
104+
83105
defp escriptize(project, force) do
84-
escript_opts = project[:escript]
106+
escript_opts = project[:escript] || collect_deprecated_opts(project)
107+
85108
script_name = escript_opts[:name] || project[:app]
86109
filename = escript_opts[:path] || Atom.to_string(script_name)
87110
main = escript_opts[:main_module]

0 commit comments

Comments
 (0)