@@ -86,11 +86,40 @@ defmodule Mix.Tasks.Help do
8686 def run ( [ task ] ) do
8787 loadpaths! ( )
8888
89- { doc , location } = verbose_doc ( task )
9089 opts = Application . get_env ( :mix , :colors )
9190
91+ opts =
92+ if ansi_docs? ( opts ) do
93+ [ width: width ( ) ] ++ opts
94+ else
95+ opts
96+ end
97+
98+ case verbose_doc ( task ) do
99+ [ single ] ->
100+ print_doc ( task , single , opts )
101+
102+ [ alias_doc , task_doc ] ->
103+ print_doc ( task , alias_doc , opts )
104+
105+ note = "\n There is also a task named \" #{ task } \" . The documentation is shown next.\n "
106+
107+ if ansi_docs? ( opts ) do
108+ IO.ANSI.Docs . print ( note , opts )
109+ else
110+ IO . puts ( note )
111+ end
112+
113+ print_doc ( task , task_doc , opts )
114+ end
115+ end
116+
117+ def run ( _ ) do
118+ Mix . raise ( "Unexpected arguments, expected \" mix help\" or \" mix help TASK\" " )
119+ end
120+
121+ defp print_doc ( task , { doc , location } , opts ) do
92122 if ansi_docs? ( opts ) do
93- opts = [ width: width ( ) ] ++ opts
94123 IO.ANSI.Docs . print_heading ( "mix #{ task } " , opts )
95124 IO.ANSI.Docs . print ( doc , opts )
96125 else
@@ -101,10 +130,6 @@ defmodule Mix.Tasks.Help do
101130 IO . puts ( "Location: #{ location } " )
102131 end
103132
104- def run ( _ ) do
105- Mix . raise ( "Unexpected arguments, expected \" mix help\" or \" mix help TASK\" " )
106- end
107-
108133 # Loadpaths without checks because tasks may be defined in deps.
109134 defp loadpaths! do
110135 args = [ "--no-elixir-version-check" , "--no-deps-check" , "--no-archives-check" ]
@@ -194,14 +219,29 @@ defmodule Mix.Tasks.Help do
194219 defp verbose_doc ( task ) do
195220 aliases = load_aliases ( )
196221
197- if Map . has_key? ( aliases , task ) do
198- task_name = aliases [ task ]
199- doc = "Alias for " <> inspect ( task_name )
200- { doc , "mix.exs" }
201- else
202- module = Mix.Task . get! ( task )
203- doc = Mix.Task . moduledoc ( module ) || "There is no documentation for this task"
204- { doc , where_is_file ( module ) }
222+ has_alias? = Map . has_key? ( aliases , task )
223+ has_task? = Mix.Task . get ( task )
224+
225+ cond do
226+ has_alias? and has_task? ->
227+ [ alias_doc ( aliases [ task ] ) , task_doc ( task ) ]
228+
229+ has_alias? ->
230+ [ alias_doc ( aliases [ task ] ) ]
231+
232+ true ->
233+ [ task_doc ( task ) ]
205234 end
206235 end
236+
237+ defp alias_doc ( task_name ) do
238+ doc = "Alias for " <> inspect ( task_name )
239+ { doc , "mix.exs" }
240+ end
241+
242+ defp task_doc ( task ) do
243+ module = Mix.Task . get! ( task )
244+ doc = Mix.Task . moduledoc ( module ) || "There is no documentation for this task"
245+ { doc , where_is_file ( module ) }
246+ end
207247end
0 commit comments