Parent

Files

Class/Module Index [+]

Quicksearch

Chef::Knife::Help

Public Instance Methods

find_manpage_path(topic) click to toggle source
# 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
find_manpages_for_query(query) click to toggle source
# 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
help_topics() click to toggle source
# 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
run() click to toggle source
# 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

[Validate]

Generated with the Darkfish Rdoc Generator 2.