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, gitlab_helper, help, method_owners, output_table, record_table, required_fields, symbolize_keys, valid_command?, yaml_load_arguments!
Class Method Details
.actions_table(topic = nil) ⇒ Terminal::Table
Table with available commands.
62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/gitlab/help.rb', line 62 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’.
83 84 85 86 |
# File 'lib/gitlab/help.rb', line 83 def change_help_output!(cmd, output_str) output_str.gsub!(/#{cmd}\((.*?)\)/m, cmd+' \1') output_str.gsub!(/\,[\s]*/, ' ') end |
.get_help(cmd) ⇒ String
Returns the (modified) help from the ‘ri’ command or returns an error.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/gitlab/help.rb', line 12 def get_help(cmd) cmd_namespace = namespace cmd if cmd_namespace ri_output = `#{ri_cmd} -T #{cmd_namespace} 2>&1`.chomp if $? == 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.).
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/gitlab/help.rb', line 48 def help_map @help_map ||= begin 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 end |
.namespace(cmd) ⇒ Object
Returns full namespace of a command (e.g. Gitlab::Client::Branches.cmd)
76 77 78 79 80 |
# File 'lib/gitlab/help.rb', line 76 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.
34 35 36 37 38 39 40 41 |
# File 'lib/gitlab/help.rb', line 34 def ri_cmd which_ri = `which ri`.chomp if which_ri.empty? raise "'ri' tool not found in $PATH. Please install it to use the help." end which_ri end |