Module: Gitlab::Help
- Extended by:
- CLI::Helpers
- Defined in:
- lib/gitlab/help.rb
Class Method Summary collapse
-
.actions_table(topic = nil) ⇒ Terminal::Table
Table with available commands.
-
.change_help_output!(cmd, output_str) ⇒ Object
Massage output from ‘ri’.
-
.get_help(cmd) ⇒ String
Returns the (modified) help from the ‘ri’ command or returns an error.
-
.help_map ⇒ Hash<Array>
A hash map that contains help topics (Branches, Groups, etc.) and a list of commands that are defined under a topic (create_branch, branches, protect_branch, etc.).
-
.namespace(cmd) ⇒ Object
Returns full namespace of a command (e.g. Gitlab::Client::Branches.cmd).
-
.ri_cmd ⇒ String
Finds the location of ‘ri’ on a system.
Methods included from CLI::Helpers
actions, client, confirm_command, excluded_fields, filtered_fields, get_keys, gitlab_helper, help, hex_color?, method_owners, output_json, output_table, record_hash, record_table, required_fields, symbolize_keys, valid_command?, yaml_load
Class Method Details
.actions_table(topic = nil) ⇒ Terminal::Table
Table with available commands.
60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/gitlab/help.rb', line 60 def actions_table(topic = nil) rows = topic ? help_map[topic] : help_map.keys table do |t| t.title = topic || 'Help Topics' # add_row expects an array and we have strings hence the map. rows.sort.map { |r| [r] }.each_with_index do |row, index| t.add_row row t.add_separator unless rows.size - 1 == index end end end |
.change_help_output!(cmd, output_str) ⇒ Object
Massage output from ‘ri’.
81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/gitlab/help.rb', line 81 def change_help_output!(cmd, output_str) output_str = +output_str output_str.gsub!(/#{cmd}(\(.*?\))/m, "#{cmd}\\1") output_str.gsub!(/,\s*/, ', ') # Ensure @option descriptions are on a single line output_str.gsub!(/\n\[/, " \[") output_str.gsub!(/\s(@)/, "\n@") output_str.gsub!(/(\])\n(:)/, '\\1 \\2') output_str.gsub!(/(:.*)(\n)(.*\.)/, '\\1 \\3') output_str.gsub!(/\{(.+)\}/, '"{\\1}"') end |
.get_help(cmd) ⇒ String
Returns the (modified) help from the ‘ri’ command or returns an error.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/gitlab/help.rb', line 13 def get_help(cmd) cmd_namespace = namespace cmd if cmd_namespace ri_output = `#{ri_cmd} -T #{cmd_namespace} 2>&1`.chomp if $CHILD_STATUS == 0 change_help_output! cmd, ri_output yield ri_output if block_given? ri_output else "Ri docs not found for #{cmd}, please install the docs to use 'help'." end else "Unknown command: #{cmd}." end end |
.help_map ⇒ Hash<Array>
A hash map that contains help topics (Branches, Groups, etc.) and a list of commands that are defined under a topic (create_branch, branches, protect_branch, etc.).
47 48 49 50 51 52 53 54 55 |
# File 'lib/gitlab/help.rb', line 47 def help_map @help_map ||= actions.each_with_object({}) do |action, hsh| key = client.method(action) .owner.to_s.gsub(/Gitlab::(?:Client::)?/, '') hsh[key] ||= [] hsh[key] << action.to_s end end |
.namespace(cmd) ⇒ Object
Returns full namespace of a command (e.g. Gitlab::Client::Branches.cmd)
74 75 76 77 78 |
# File 'lib/gitlab/help.rb', line 74 def namespace(cmd) method_owners.select { |method| method[:name] == cmd } .map { |method| "#{method[:owner]}.#{method[:name]}" } .shift end |
.ri_cmd ⇒ String
Finds the location of ‘ri’ on a system.
35 36 37 38 39 40 |
# File 'lib/gitlab/help.rb', line 35 def ri_cmd which_ri = `which ri`.chomp raise "'ri' tool not found in $PATH. Please install it to use the help." if which_ri.empty? which_ri end |