zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

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