determine_command.ex (1374B)
1 defmodule Credo.Execution.Task.DetermineCommand do 2 @moduledoc false 3 4 use Credo.Execution.Task 5 6 alias Credo.CLI.Options 7 alias Credo.Execution 8 9 def call(exec, _opts) do 10 determine_command(exec, exec.cli_options) 11 end 12 13 # `--help` given 14 defp determine_command( 15 exec, 16 %Options{command: nil, switches: %{help: true}} = options 17 ) do 18 set_command_and_path(exec, options, "help", options.path) 19 end 20 21 # `--version` given 22 defp determine_command( 23 exec, 24 %Options{command: nil, switches: %{version: true}} = options 25 ) do 26 set_command_and_path(exec, options, "version", options.path) 27 end 28 29 defp determine_command(exec, options) do 30 command_name = 31 case exec.cli_options.args do 32 [potential_command_name | _] -> 33 command_names = Execution.get_valid_command_names(exec) 34 35 if Enum.member?(command_names, potential_command_name) do 36 potential_command_name 37 end 38 39 _ -> 40 nil 41 end 42 43 set_command_and_path(exec, options, command_name, options.path) 44 end 45 46 defp set_command_and_path(exec, _options, nil, _path), do: exec 47 48 defp set_command_and_path(exec, options, command, path) do 49 %Execution{ 50 exec 51 | cli_options: %Options{ 52 options 53 | command: command, 54 path: path 55 } 56 } 57 end 58 end