Module: Gitlab::CI::Help
- Extended by:
- CLI::Helpers
- Defined in:
- lib/gitlab/ci/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, help, valid_command?
Class Method Details
.actions_table(topic = nil) ⇒ Terminal::Table
Table with available commands.
61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/gitlab/ci/help.rb', line 61 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’.
82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/gitlab/ci/help.rb', line 82 def change_help_output!(cmd, 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') end |
.get_help(cmd) ⇒ String
Returns the (modified) help from the ‘ri’ command or returns an error.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/gitlab/ci/help.rb', line 11 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 56 |
# File 'lib/gitlab/ci/help.rb', line 47 def help_map @help_map ||= begin actions.each_with_object({}) do |action, hsh| key = client.method(action). owner.to_s.gsub(/Gitlab::CI::(?: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)
75 76 77 78 79 |
# File 'lib/gitlab/ci/help.rb', line 75 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.
33 34 35 36 37 38 39 40 |
# File 'lib/gitlab/ci/help.rb', line 33 def ri_cmd which_ri = `which ri`.chomp if which_ri.empty? fail "'ri' tool not found in $PATH. Please install it to use the help." end which_ri end |