Skip to content

Commit 9c2ec6a

Browse files
ericentinJosé Valim
authored andcommitted
mix xref command-style (#4808)
Signed-off-by: José Valim <[email protected]>
1 parent 92cf023 commit 9c2ec6a

File tree

3 files changed

+24
-28
lines changed

3 files changed

+24
-28
lines changed

lib/mix/lib/mix/tasks/compile.xref.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ defmodule Mix.Tasks.Compile.Xref do
3636
end
3737

3838
defp run_xref do
39-
Mix.Task.run("xref", ["--warnings"])
39+
Mix.Task.run("xref", ["warnings"])
4040
end
4141

4242
defp needs_xref?(opts) do

lib/mix/lib/mix/tasks/xref.ex

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ defmodule Mix.Tasks.Xref do
1212
1313
## Xref modes
1414
15-
The following options control the information xref can emit.
15+
The following commands are available:
1616
17-
* `--warnings` - prints warnings for violated cross reference checks
18-
* `--unreachable` - prints all unreachable "file:line: module.function/arity" entries
19-
* `--callers` - prints all references of given `Module`, `Module.function`, or
20-
`Module.function/arity`
17+
* `warnings` - prints warnings for violated cross reference checks
18+
* `unreachable` - prints all unreachable "file:line: module.function/arity" entries
19+
* `callers CALLEE` - prints all references of `CALLEE`, which can be one of: `Module`,
20+
`Module.function`, or `Module.function/arity`
2121
2222
## Command line options
2323
@@ -36,31 +36,29 @@ defmodule Mix.Tasks.Xref do
3636
"""
3737

3838
@switches [compile: :boolean, deps_check: :boolean, archives_check: :boolean,
39-
warnings: :boolean, unreachable: :boolean, elixir_version_check: :boolean,
40-
callers: :string]
39+
elixir_version_check: :boolean]
4140

4241
@doc """
4342
Runs this task.
4443
"""
4544
@spec run(OptionParser.argv) :: :ok | :error
4645
def run(args) do
47-
{opts, _} =
46+
{opts, args} =
4847
OptionParser.parse!(args, strict: @switches)
4948

5049
if Keyword.get(opts, :compile, true) do
5150
Mix.Task.run("compile")
5251
end
5352

54-
modes = [:warnings, :unreachable, :callers]
55-
case Keyword.take(opts, modes) do
56-
[warnings: true] ->
53+
case args do
54+
["warnings"] ->
5755
warnings()
58-
[unreachable: true] ->
56+
["unreachable"] ->
5957
unreachable()
60-
[callers: callee] ->
58+
["callers", callee] ->
6159
callers(callee)
6260
_ ->
63-
Mix.raise "xref expects exactly one of the following modes: --warnings, --unreachable, --callers"
61+
Mix.raise "xref expects one of the following commands: warnings, unreachable, callers CALLEE"
6462
end
6563
end
6664

@@ -279,7 +277,7 @@ defmodule Mix.Tasks.Xref do
279277

280278
defp raise_invalid_callee(callee) do
281279
message =
282-
"xref --callers expects Module, Module.function, or Module.function/arity, got: " <>
280+
"xref callers CALLEE expects Module, Module.function, or Module.function/arity, got: " <>
283281
callee
284282

285283
Mix.raise message

lib/mix/test/mix/tasks/xref_test.exs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ defmodule Mix.Tasks.XrefTest do
241241
File.write!("lib/a.ex", contents)
242242

243243
assert capture_io(:stderr, fn ->
244-
assert Mix.Task.run("xref", ["--warnings"]) == :error
244+
assert Mix.Task.run("xref", ["warnings"]) == :error
245245
end) == expected
246246
end
247247
end
@@ -251,7 +251,7 @@ defmodule Mix.Tasks.XrefTest do
251251
File.write!("lib/a.ex", contents)
252252

253253
assert capture_io(:stderr, fn ->
254-
assert Mix.Task.run("xref", ["--warnings"]) == :ok
254+
assert Mix.Task.run("xref", ["warnings"]) == :ok
255255
end) == ""
256256
end
257257
end
@@ -274,7 +274,7 @@ defmodule Mix.Tasks.XrefTest do
274274
File.write!("lib/a.ex", contents)
275275

276276
assert capture_io(fn ->
277-
assert Mix.Task.run("xref", ["--unreachable"]) == :error
277+
assert Mix.Task.run("xref", ["unreachable"]) == :error
278278
end) == expected
279279
end
280280
end
@@ -420,34 +420,32 @@ defmodule Mix.Tasks.XrefTest do
420420

421421
test "callers: no argument gives error" do
422422
in_fixture "no_mixfile", fn ->
423-
message =
424-
"Could not invoke task \"xref\": 1 error found!\n" <>
425-
"--callers : Missing argument of type string"
423+
message = "xref expects one of the following commands: warnings, unreachable, callers CALLEE"
426424

427425
assert_raise Mix.Error, message, fn ->
428-
assert Mix.Task.run("xref", ["--callers"]) == :error
426+
assert Mix.Task.run("xref", ["callers"]) == :error
429427
end
430428
end
431429
end
432430

433431
test "callers: gives nice error for quotable but invalid callers spec" do
434432
in_fixture "no_mixfile", fn ->
435433
message =
436-
"xref --callers expects Module, Module.function, or Module.function/arity, got: Module.func(arg)"
434+
"xref callers CALLEE expects Module, Module.function, or Module.function/arity, got: Module.func(arg)"
437435

438436
assert_raise Mix.Error, message, fn ->
439-
Mix.Task.run("xref", ["--callers", "Module.func(arg)"])
437+
Mix.Task.run("xref", ["callers", "Module.func(arg)"])
440438
end
441439
end
442440
end
443441

444442
test "callers: gives nice error for unquotable callers spec" do
445443
in_fixture "no_mixfile", fn ->
446444
message =
447-
"xref --callers expects Module, Module.function, or Module.function/arity, got: %"
445+
"xref callers CALLEE expects Module, Module.function, or Module.function/arity, got: %"
448446

449447
assert_raise Mix.Error, message, fn ->
450-
Mix.Task.run("xref", ["--callers", "%"])
448+
Mix.Task.run("xref", ["callers", "%"])
451449
end
452450
end
453451
end
@@ -458,7 +456,7 @@ defmodule Mix.Tasks.XrefTest do
458456
File.write!("lib/b.ex", contents_b)
459457

460458
assert capture_io(fn ->
461-
assert Mix.Task.run("xref", ["--callers", callee]) == :ok
459+
assert Mix.Task.run("xref", ["callers", callee]) == :ok
462460
end) == expected
463461
end
464462
end

0 commit comments

Comments
 (0)