Packages
github_issues
0.4.44
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 escript 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 escript command's usage and syntax.
"""
@spec show_help() :: :ok
def show_help() do
# Examples of usage:
# gi --help
# gi elixir-lang elixir 7 --last
# gi myfreeweb httpotion --bell
# gi dynamo dynamo -lb 8 -t green-border
# gi dynamo dynamo -bl 9 --table-style=dark
# gi dynamo dynamo 11 -blt light
# gi dynamo dynamo
texts = ["usage:", " #{@escript}"]
filler = String.pad_leading("", Enum.join(texts) |> String.length())
prefix = help_format([:section, :normal], 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
## Private functions
@spec help_format([atom], [String.t()]) :: IO.ANSI.ansidata()
defp help_format(types, texts) do
types
|> Enum.map(&@help_attrs[&1])
|> Enum.zip(texts)
|> Enum.map(&Tuple.to_list/1)
|> IO.ANSI.format()
end
end