# File lib/chef/knife/help.rb, line 92 def find_manpage_path(topic) if ::File.exists?(::File.expand_path("../distro/common/man/man1/#{topic}.1", CHEF_ROOT)) # If we've provided the man page in the gem, give that return ::File.expand_path("../distro/common/man/man1/#{topic}.1", CHEF_ROOT) else # Otherwise, we'll just be using MANPATH topic end end
# File lib/chef/knife/help.rb, line 75 def find_manpages_for_query(query) possibilities = help_topics.select do |manpage| ::File.fnmatch("knife-#{query}*", manpage) || ::File.fnmatch("#{query}*", manpage) end if possibilities.empty? ui.error "No help found for '#{query}'" ui.msg "" print_help_topics exit 1 elsif possibilities.size == 1 possibilities.first else ui.info "Multiple help topics match your query. Pick one:" ui.highline.choose(*possibilities) end end
# File lib/chef/knife/help.rb, line 62 def help_topics # The list of help topics is generated by a rake task from the available man pages # This constant is provided in help_topics.rb which is automatically required/loaded by the knife subcommand loader. HELP_TOPICS end
# File lib/chef/knife/help.rb, line 68 def print_help_topics ui.info "Available help topics are: " help_topics.collect {|t| t.gsub(/knife-/, '') }.sort.each do |topic| ui.msg " #{topic}" end end
# File lib/chef/knife/help.rb, line 25 def run if name_args.empty? ui.info "Usage: knife SUBCOMMAND (options)" ui.msg "" # This command is atypical, the user is likely not interested in usage of # this command, but knife in general. So hack the banner. opt_parser.banner = "General Knife Options:" ui.msg opt_parser.to_s ui.msg "" ui.info "For further help:" ui.info( knife help list list help topics knife help knife show general knife help knife help TOPIC display the manual for TOPIC knife SUBCOMMAND --help show the options for a command) exit 1 else @query = name_args.join('-') end case @query when 'topics', 'list' print_help_topics exit 1 when 'intro', 'knife' @topic = 'knife' else @topic = find_manpages_for_query(@query) end manpage_path = find_manpage_path(@topic) exec "man #{manpage_path}" end
Generated with the Darkfish Rdoc Generator 2.