Method: Rex::Ui::Text::DispatcherShell::CommandDispatcher#cmd_help
- Defined in:
- lib/rex/ui/text/dispatcher_shell.rb
#cmd_help(cmd = nil, *ignored) ⇒ Object Also known as: cmd_?
Displays the help banner. With no arguments, this is just a list of all commands grouped by dispatcher. Otherwise, tries to use a method named cmd_#<code>cmd</code>_help for the first dispatcher that has a command named cmd
. If no such method exists, uses cmd
as a regex to compare against each enstacked dispatcher’s name and dumps commands of any that match.
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
# File 'lib/rex/ui/text/dispatcher_shell.rb', line 172 def cmd_help(cmd=nil, *ignored) if cmd help_found = false cmd_found = false shell.dispatcher_stack.each do |dispatcher| next unless dispatcher.respond_to?(:commands) next if (dispatcher.commands.nil?) next if (dispatcher.commands.length == 0) if dispatcher.respond_to?("cmd_#{cmd}", true) cmd_found = true break unless dispatcher.respond_to?("cmd_#{cmd}_help", true) dispatcher.send("cmd_#{cmd}_help") help_found = true break end end unless cmd_found # We didn't find a cmd, try it as a dispatcher name shell.dispatcher_stack.each do |dispatcher| if dispatcher.name =~ /#{cmd}/i print_line(dispatcher.help_to_s) cmd_found = help_found = true end end end if docs_dir && File.exist?(File.join(docs_dir, cmd + '.md')) print_line print(File.read(File.join(docs_dir, cmd + '.md'))) end print_error("No help for #{cmd}, try -h") if cmd_found and not help_found print_error("No such command") if not cmd_found else print(shell.help_to_s) if docs_dir && File.exist?(File.join(docs_dir + '.md')) print_line print(File.read(File.join(docs_dir + '.md'))) end end end |