@@ -80,8 +80,31 @@ defmodule Mix.Tasks.Escriptize do
80
80
escriptize ( Mix.Project . config , opts [ :force ] )
81
81
end
82
82
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
+
83
105
defp escriptize ( project , force ) do
84
- escript_opts = project [ :escript ]
106
+ escript_opts = project [ :escript ] || collect_deprecated_opts ( project )
107
+
85
108
script_name = escript_opts [ :name ] || project [ :app ]
86
109
filename = escript_opts [ :path ] || Atom . to_string ( script_name )
87
110
main = escript_opts [ :main_module ]
0 commit comments