Skip to content

Commit ecdb3e9

Browse files
committed
Report errors about missing files in the mix run task
1 parent f92d839 commit ecdb3e9

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

lib/mix/lib/mix/tasks/run.ex

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,21 +55,45 @@ defmodule Mix.Tasks.Run do
5555
Enum.each opts, fn({key, value}) ->
5656
case key do
5757
:parallel_require ->
58-
value |> filter_patterns |> Kernel.ParallelRequire.files
58+
case filter_patterns(value) do
59+
[] ->
60+
report_error("parallel-require: No files matched pattern #{value}")
61+
62+
filtered ->
63+
Kernel.ParallelRequire.files(filtered)
64+
end
65+
5966
:require ->
60-
value |> filter_patterns |> Enum.each &Code.require_file(&1)
67+
case filter_patterns(value) do
68+
[] ->
69+
report_error("require: No files matched pattern #{value}")
70+
71+
filtered ->
72+
Enum.each(filtered, &Code.require_file(&1))
73+
end
74+
6175
:eval ->
6276
Code.eval_string(value)
6377
_ ->
6478
:ok
6579
end
6680
end
6781

68-
if file, do: Code.require_file(file)
82+
if file do
83+
if File.regular?(file) do
84+
Code.require_file(file)
85+
else
86+
report_error("No such file: #{file}")
87+
end
88+
end
6989
if opts[:no_halt], do: :timer.sleep(:infinity)
7090
end
7191

7292
defp filter_patterns(pattern) do
7393
Enum.filter(Enum.uniq(Path.wildcard(pattern)), &File.regular?(&1))
7494
end
95+
96+
defp report_error(msg) do
97+
raise Mix.Error, message: msg
98+
end
7599
end

0 commit comments

Comments
 (0)