zf

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

help.ex (3746B)


      1 defmodule Credo.CLI.Command.Help do
      2   @moduledoc false
      3 
      4   @ljust 12
      5   @starting_order ~w(suggest explain)
      6   @ending_order ~w(help)
      7 
      8   alias Credo.CLI.Output.UI
      9   alias Credo.CLI.Sorter
     10   alias Credo.CLI.Switch
     11   alias Credo.Execution
     12 
     13   use Credo.CLI.Command,
     14     short_description: "Show this help message",
     15     cli_switches: [
     16       Switch.string("format"),
     17       Switch.boolean("help", alias: :h)
     18     ]
     19 
     20   @doc false
     21   def call(exec, _opts) do
     22     print_banner()
     23     print_message(exec)
     24 
     25     exec
     26   end
     27 
     28   def print_banner do
     29     banner()
     30     |> String.split("")
     31     |> Enum.flat_map(fn char -> [color_for(char), char_for(char)] end)
     32     |> UI.puts()
     33 
     34     UI.puts()
     35   end
     36 
     37   def print_message(exec) do
     38     UI.puts("Credo Version #{Credo.version()}")
     39     UI.puts(["Usage: ", :olive, "$ mix credo <command> [options]"])
     40     UI.puts("\nCommands:\n")
     41 
     42     exec
     43     |> Execution.get_valid_command_names()
     44     |> Sorter.ensure(@starting_order, @ending_order)
     45     |> Enum.each(fn name ->
     46       module = Execution.get_command(exec, name)
     47 
     48       padded_name =
     49         name
     50         |> to_string
     51         |> String.pad_trailing(@ljust)
     52 
     53       case module.short_description do
     54         nil ->
     55           UI.puts("  #{padded_name}")
     56 
     57         short_description ->
     58           UI.puts("  #{padded_name}#{short_description}")
     59       end
     60     end)
     61 
     62     UI.puts("\nUse `--help` on any command to get further information.")
     63 
     64     example = [
     65       "For example, `",
     66       :olive,
     67       "mix credo suggest --help",
     68       :reset,
     69       "` for help on the default command."
     70     ]
     71 
     72     UI.puts(example)
     73   end
     74 
     75   def color_for("#"), do: [:reset, :darkgreen]
     76   def color_for(";"), do: [:reset, :faint, :green]
     77   def color_for("~"), do: [:reset, :bright, :green]
     78   def color_for(":"), do: [:reset, :faint, :yellow]
     79   def color_for("="), do: [:reset, :bright, :yellow]
     80   def color_for("-"), do: [:reset, :faint, :red]
     81   def color_for("["), do: [:reset, :bright, :red]
     82   def color_for("M"), do: [:reset, :blue]
     83   def color_for(","), do: [:reset, :color235]
     84   def color_for(_), do: [:reset, :white]
     85 
     86   # ~w(▁ ▂ ▃ ▄ ▅ ▆ ▇ █)
     87 
     88   def char_for(" "), do: " "
     89   def char_for("\n"), do: "\n"
     90   def char_for("#"), do: "▇"
     91   def char_for(";"), do: "▇"
     92   def char_for("~"), do: "▇"
     93   def char_for(":"), do: "▇"
     94   def char_for("="), do: "▇"
     95   def char_for("-"), do: "▇"
     96   def char_for("["), do: "▇"
     97   def char_for("M"), do: "▇"
     98   def char_for(","), do: "▅"
     99   def char_for(v), do: v
    100 
    101   def banner do
    102     """
    103 
    104                         #######################     #####    ###
    105                         #######################,,,,,#####,,, ###
    106                            ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    107                           ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    108                    ~~~~~~~~~~~~~~~~~,,,~~~~~~~~,,,~~~,,,,,,,,,,,
    109              ;;;;;;~~~~~~~~~~~~~~~~~,,,~~~~~~~~,,,~~~,,,,,,,,,,,
    110              ;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    111                           ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    112       ::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    113       :::::===================,,,==========,,,==,,,,,,,,,,,,,,,,
    114            ===================,,,==========,,,==,,,,,,,,,,,,,,,,
    115                           ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    116           ----------------,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    117           -------[[[[[[[[[[[[[[[[[[[[[[[,,,[[,,,[[[[[[,,,,,,,,,,
    118                  [[[[[[[[[[[[[[[[[[[[[[[,,,[[,,,[[[[[[,,,,,,,,,,
    119                           ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    120                            ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    121                         MMMMMMMMMMMMMMMMMMMMMMM,,,,MMMMM,,,, MMM
    122                         MMMMMMMMMMMMMMMMMMMMMMM    MMMMM     MMM
    123     """
    124   end
    125 end