Packages
github_issues
0.3.9
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 false
use PersistConfig
alias IO.ANSI.Table.Style
@count Application.get_env(@app, :default_count)
@escript Mix.Local.name_for(:escript, Mix.Project.config())
@help_attrs Application.get_env(@app, :help_attrs)
@switches Application.get_env(@app, :default_switches)
@spec show_help() :: no_return
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 laravel elixir
{types, texts} =
case :os.type() do
{:win32, _} ->
{
[:section, :normal, :command, :normal],
["usage:", " ", "escript", " #{@escript}"]
}
{:unix, _} ->
{
[:section, :normal],
["usage:", " ./#{@escript}"]
}
end
filler = " " |> String.duplicate(texts |> Enum.join() |> 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"]
)
Style.texts("#{template}", &IO.puts/1)
System.halt(0)
end
@spec help_format([atom], [String.t]) :: IO.chardata
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