Class: Chef::Knife::Help
Instance Attribute Summary
Attributes inherited from Chef::Knife
#name_args, #ui
Instance Method Summary
collapse
Methods inherited from Chef::Knife
#api_key, #apply_computed_config, category, chef_config_dir, common_name, #config_file_settings, config_loader, #configure_chef, #create_object, #delete_object, dependency_loaders, deps, #format_rest_error, guess_category, #humanize_exception, #humanize_http_exception, inherited, #initialize, load_commands, load_config, load_deps, #maybe_setup_fips, #merge_configs, msg, #noauth_rest, #parse_options, reset_config_loader!, reset_subcommands!, #rest, run, #run_with_pretty_exceptions, #server_url, #show_usage, snake_case_name, subcommand_category, subcommand_class_from, subcommand_files, subcommand_loader, subcommands, subcommands_by_category, #test_mandatory_field, ui, unnamed?, use_separate_defaults?, #username
#constantize, #convert_to_class_name, #convert_to_snake_case, #filename_to_qualified_string, #normalize_snake_case_name, #snake_case_basename
#enforce_path_sanity
Constructor Details
This class inherits a constructor from Chef::Knife
Instance Method Details
#find_manpage_path(topic) ⇒ Object
90
91
92
93
94
95
96
97
98
|
# File 'lib/chef/knife/help.rb', line 90
def find_manpage_path(topic)
if ::File.exists?(::File.expand_path("../distro/common/man/man1/#{topic}.1", CHEF_ROOT))
return ::File.expand_path("../distro/common/man/man1/#{topic}.1", CHEF_ROOT)
else
topic
end
end
|
#find_manpages_for_query(query) ⇒ Object
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/chef/knife/help.rb', line 73
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 ⇒ Object
60
61
62
63
64
|
# File 'lib/chef/knife/help.rb', line 60
def help_topics
HELP_TOPICS
end
|
#print_help_topics ⇒ Object
66
67
68
69
70
71
|
# File 'lib/chef/knife/help.rb', line 66
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
|
#run ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/chef/knife/help.rb', line 25
def run
if name_args.empty?
ui.info "Usage: knife SUBCOMMAND (options)"
ui.msg ""
opt_parser.banner = "General Knife Options:"
ui.msg opt_parser.to_s
ui.msg ""
ui.info "For further help:"
ui.info(<<-MOAR_HELP)
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
MOAR_HELP
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
|