Packages
github_issues
0.4.61
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.\s\s
Reference https://dev.to/paulasantamaria/command-line-interfaces-structure-syntax-2533
"""
use PersistConfig
alias IO.ANSI.Plus, as: ANSI
alias IO.ANSI.Table.Style
@default_count get_env(:default_count)
@default_switches get_env(:default_switches)
@escript Mix.Project.config()[:escript][:name]
@help_attrs get_env(:help_attrs)
@doc """
Prints info on the escript command's usage and syntax.
## Examples
gi --help
gi elixir-lang elixir 7 --last
gi phoenixframework phoenix --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
"""
@spec print_help :: :ok
def print_help do
texts = ["usage: ", "#{@escript}"]
length = Enum.join(texts) |> String.length()
filler = String.duplicate(" ", length)
prefix = help_format([:section, :normal], texts)
line_arguments =
help_format([:arg], ["<github-user> <github-project> [<count>]"])
line_flags = help_format([:switch], ["[-l | --last] [-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 ",
"#{@default_count}"
])
line_default_table_style =
help_format([:normal, :arg, :normal, :value], [
" - default ",
"<table-style>",
" is ",
"#{@default_switches[:table_style]}"
])
line_table_style_one_of =
help_format([:normal, :arg, :normal], [
" - ",
"<table-style>",
" is one of:"
])
IO.write("""
#{prefix} #{line_arguments}
#{filler} #{line_flags}
#{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.chardata()
defp help_format(types, texts) do
types
|> Enum.map(&@help_attrs[&1])
|> Enum.zip(texts)
|> Enum.map(&Tuple.to_list/1)
|> ANSI.format()
end
end