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, list_commands, load_commands, load_config, load_deps, #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_loader, subcommands, subcommands_by_category, ui, unnamed?, use_separate_defaults?, #username
#constantize, #convert_to_class_name, #convert_to_snake_case, #filename_to_qualified_string, #snake_case_basename
#enforce_path_sanity
Constructor Details
This class inherits a constructor from Chef::Knife
Instance Method Details
#find_manpage_path(topic) ⇒ Object
92
93
94
95
96
97
98
99
100
|
# 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))
return ::File.expand_path("../distro/common/man/man1/#{topic}.1", CHEF_ROOT)
else
topic
end
end
|
#find_manpages_for_query(query) ⇒ Object
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# 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 ⇒ Object
62
63
64
65
66
|
# File 'lib/chef/knife/help.rb', line 62
def help_topics
HELP_TOPICS
end
|
#print_help_topics ⇒ Object
68
69
70
71
72
73
|
# 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
|
#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
59
60
|
# 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(" knife help list list help topics\n knife help knife show general knife help\n knife help TOPIC display the manual for TOPIC\n knife SUBCOMMAND --help show the options for a command\n")
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
|