zf

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

convert_cli_options_to_config.ex (1937B)


      1 defmodule Credo.Execution.Task.ConvertCLIOptionsToConfig do
      2   @moduledoc false
      3 
      4   use Credo.Execution.Task
      5 
      6   alias Credo.CLI.Output.UI
      7   alias Credo.ConfigBuilder
      8 
      9   @exit_status Credo.CLI.ExitStatus.config_parser_error()
     10 
     11   def call(exec, _opts) do
     12     exec
     13     |> ConfigBuilder.parse()
     14     |> halt_on_error(exec)
     15   end
     16 
     17   def error(exec, _opts) do
     18     exec
     19     |> Execution.get_halt_message()
     20     |> puts_error_message()
     21 
     22     put_exit_status(exec, @exit_status)
     23   end
     24 
     25   defp halt_on_error({:error, error}, exec) do
     26     Execution.halt(exec, error)
     27   end
     28 
     29   defp halt_on_error(exec, _) do
     30     exec
     31   end
     32 
     33   defp puts_error_message({:badconfig, filename, line_no, description, trigger})
     34        when not is_nil(filename) do
     35     lines =
     36       filename
     37       |> File.read!()
     38       |> Credo.Code.to_lines()
     39       |> Enum.filter(fn {line_no2, _line} ->
     40         line_no2 >= line_no - 2 and line_no2 <= line_no + 2
     41       end)
     42 
     43     UI.warn([:red, "** (config) Error while loading config file!"])
     44     UI.warn("")
     45 
     46     UI.warn([:cyan, "  file: ", :reset, filename])
     47     UI.warn([:cyan, "  line: ", :reset, "#{line_no}"])
     48     UI.warn("")
     49 
     50     UI.warn(["  ", description, :reset, :cyan, :bright, trigger])
     51 
     52     UI.warn("")
     53 
     54     Enum.each(lines, fn {line_no2, line} ->
     55       color = color_list(line_no, line_no2)
     56 
     57       UI.warn([color, String.pad_leading("#{line_no2}", 5), :reset, "  ", color, line])
     58     end)
     59 
     60     UI.warn("")
     61   end
     62 
     63   defp puts_error_message({:notfound, message}) do
     64     UI.warn([:red, "** (config) #{message}"])
     65     UI.warn("")
     66   end
     67 
     68   defp puts_error_message({:config_name_not_found, message}) do
     69     UI.warn([:red, "** (config) #{message}"])
     70     UI.warn("")
     71   end
     72 
     73   defp puts_error_message(error) do
     74     IO.warn("Execution halted during #{__MODULE__}! Unrecognized error: #{inspect(error)}")
     75   end
     76 
     77   defp color_list(line_no, line_no2) when line_no == line_no2, do: [:bright, :cyan]
     78   defp color_list(_, _), do: [:faint]
     79 end