Packages
github_issues
0.4.33
0.4.71
0.4.70
0.4.69
0.4.68
0.4.66
0.4.65
0.4.64
0.4.63
0.4.62
0.4.61
0.4.60
0.4.59
0.4.58
0.4.56
0.4.55
0.4.54
0.4.53
0.4.52
0.4.51
0.4.50
0.4.48
0.4.47
0.4.46
0.4.45
0.4.44
0.4.43
0.4.42
0.4.41
0.4.40
0.4.39
0.4.38
0.4.37
0.4.36
0.4.35
0.4.34
0.4.33
0.4.32
0.4.31
0.4.30
0.4.29
0.4.28
0.4.27
0.4.26
0.4.25
0.4.24
0.4.23
0.4.22
0.4.21
0.4.20
0.4.19
0.4.18
0.4.17
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.24
0.3.23
0.3.22
0.3.21
0.3.20
0.3.19
0.3.18
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.0
0.2.5
0.2.3
0.2.2
0.2.0
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.4
0.1.2
0.1.1
0.1.0
Writes GitHub Issues to "stdio" in a table with borders and colors.
Current section
Files
Jump to
Current section
Files
lib/github/issues/help.ex
defmodule GitHub.Issues.Help do
@moduledoc """
Prints info on the command's usage and syntax.
"""
use PersistConfig
alias IO.ANSI.Table.Style
@count get_env(:default_count)
@escript Mix.Project.config()[:escript][:name]
@help_attrs get_env(:help_attrs)
@switches get_env(:default_switches)
@doc """
Prints info on the command's usage and syntax.
"""
@spec show_help() :: :ok
def show_help() do
# Examples of usage on Windows:
# escript gi --help
# escript gi elixir-lang elixir 7 --last
# escript gi myfreeweb httpotion --bell
# escript gi dynamo dynamo -lb 8 -t green-border
# escript gi dynamo dynamo -bl 9 --table-style=dark
# escript gi dynamo dynamo 11 -blt light
# Examples of usage on macOS:
# ./gi dynamo dynamo
{types, texts} =
case :os.type() do
{:win32, _} ->
{[:section, :normal, :command, :normal],
["usage:", " ", "escript", " #{@escript}"]}
{:unix, _} ->
{[:section, :normal], ["usage:", " ./#{@escript}"]}
end
filler = String.duplicate("", Enum.join(texts) |> String.length())
prefix = help_format(types, texts)
line_user_project =
help_format([:switch, :arg, :normal, :arg], [
"[(-h | --help)] ",
"<github-user>",
" ",
"<github-project>"
])
line_count =
help_format([:switch, :normal, :arg, :normal, :switch], [
"[(-l | --last)]",
" ",
"<count>",
" ",
"[(-b | --bell)]"
])
line_table_style =
help_format([:switch, :arg, :switch], [
"[(-t | --table-style)=",
"<table-style>",
"]"
])
line_where = help_format([:section], ["where:"])
line_default_count =
help_format([:normal, :arg, :normal, :value], [
" - default ",
"<count>",
" is ",
"#{@count}"
])
line_default_table_style =
help_format([:normal, :arg, :normal, :value], [
" - default ",
"<table-style>",
" is ",
"#{@switches[:table_style]}"
])
line_table_style_one_of =
help_format([:normal, :arg, :normal], [
" - ",
"<table-style>",
" is one of:"
])
IO.write("""
#{prefix} #{line_user_project}
#{filler} #{line_count}
#{filler} #{line_table_style}
#{line_where}
#{line_default_count}
#{line_default_table_style}
#{line_table_style_one_of}
""")
template =
help_format([:normal, :value, :normal], [
"\s\s\s\s• ",
"&arg",
"&filler - ¬e"
])
texts = Style.texts("#{template}")
Enum.each(texts, &IO.puts/1)
end
@spec help_format([atom], [String.t()]) :: IO.ANSI.ansidata()
defp help_format(types, texts) do
Enum.map(types, &@help_attrs[&1])
|> Enum.zip(texts)
|> Enum.map(&Tuple.to_list/1)
|> IO.ANSI.format()
end
end