summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2018-03-15 11:00:23 -0700
committerGitHub <noreply@github.com>2018-03-15 11:00:23 -0700
commit6eb849fbdf9e84b90d6e8218179ff70520d3accf (patch)
tree3e20e64aef5d46cffe0ed4b41c70343d22695013
parent4196115a935018f84aad09201bdde15b2afdf78f (diff)
parent4386e8b21caa6085f0e7922cdac40c2d2887d411 (diff)
downloadchef-6eb849fbdf9e84b90d6e8218179ff70520d3accf.tar.gz
Merge pull request #6982 from chef/more_manpages
Remove knife help which used the manpages
-rw-r--r--lib/chef/knife/help.rb101
-rw-r--r--lib/chef/knife/help_topics.rb4
-rw-r--r--spec/unit/knife/knife_help.rb92
3 files changed, 0 insertions, 197 deletions
diff --git a/lib/chef/knife/help.rb b/lib/chef/knife/help.rb
deleted file mode 100644
index 075bf4b310..0000000000
--- a/lib/chef/knife/help.rb
+++ /dev/null
@@ -1,101 +0,0 @@
-#
-# Author:: Daniel DeLeo (<dan@chef.io>)
-# Copyright:: Copyright 2011-2016, Chef Software Inc.
-# License:: Apache License, Version 2.0
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-class Chef
- class Knife
- class Help < Chef::Knife
-
- banner "knife help [list|TOPIC]"
-
- 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(<<-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
-
- 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
-
- 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
-
- 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
-
- 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
- ::File.expand_path("../distro/common/man/man1/#{topic}.1", CHEF_ROOT)
- else
- # Otherwise, we'll just be using MANPATH
- topic
- end
- end
- end
- end
-end
diff --git a/lib/chef/knife/help_topics.rb b/lib/chef/knife/help_topics.rb
deleted file mode 100644
index a2aad65f55..0000000000
--- a/lib/chef/knife/help_topics.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-# Do not edit this file by hand
-# This file is autogenerated by the docs:list rake task from the available manpages
-
-HELP_TOPICS = ["chef-shell", "knife-bootstrap", "knife-client", "knife-configure", "knife-cookbook-site", "knife-cookbook", "knife-data-bag", "knife-delete", "knife-deps", "knife-diff", "knife-download", "knife-edit", "knife-environment", "knife-exec", "knife-index-rebuild", "knife-list", "knife-node", "knife-raw", "knife-recipe-list", "knife-role", "knife-search", "knife-show", "knife-ssh", "knife-status", "knife-tag", "knife-upload", "knife-user", "knife-xargs", "knife"]
diff --git a/spec/unit/knife/knife_help.rb b/spec/unit/knife/knife_help.rb
deleted file mode 100644
index 0369951511..0000000000
--- a/spec/unit/knife/knife_help.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-#
-# Author:: Bryan McLellan <btm@loftninjas.org>
-# Copyright:: Copyright 2011-2016, Chef Software Inc.
-# License:: Apache License, Version 2.0
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-require "spec_helper"
-
-describe Chef::Knife::Help do
- before(:each) do
- # Perilously use the build in list even though it is dynamic so we don't get warnings about the constant
- # HELP_TOPICS = [ "foo", "bar", "knife-kittens", "ceiling-cat", "shell" ]
- @knife = Chef::Knife::Help.new
- end
-
- it "should return a list of help topics" do
- expect(@knife.help_topics).to include("knife-status")
- end
-
- it "should run man for you" do
- @knife.name_args = [ "shell" ]
- expect(@knife).to receive(:exec).with(/^man \/.*\/shell.1$/)
- @knife.run
- end
-
- it "should suggest topics" do
- @knife.name_args = [ "list" ]
- allow(@knife.ui).to receive(:msg)
- expect(@knife.ui).to receive(:info).with("Available help topics are: ")
- expect(@knife.ui).to receive(:msg).with(/knife/)
- allow(@knife).to receive(:exec)
- expect(@knife).to receive(:exit).with(1)
- @knife.run
- end
-
- describe "find_manpage_path" do
- it "should find the man page in the gem" do
- expect(@knife.find_manpage_path("shell")).to match(/distro\/common\/man\/man1\/chef-shell.1$/)
- end
-
- it "should provide the man page name if not in the gem" do
- expect(@knife.find_manpage_path("foo")).to eq("foo")
- end
- end
-
- describe "find_manpages_for_query" do
- it "should error if it does not find a match" do
- allow(@knife.ui).to receive(:error)
- allow(@knife.ui).to receive(:info)
- allow(@knife.ui).to receive(:msg)
- expect(@knife).to receive(:exit).with(1)
- expect(@knife.ui).to receive(:error).with("No help found for 'chickens'")
- expect(@knife.ui).to receive(:msg).with(/knife/)
- @knife.find_manpages_for_query("chickens")
- end
- end
-
- describe "print_help_topics" do
- it "should print the known help topics" do
- allow(@knife.ui).to receive(:msg)
- allow(@knife.ui).to receive(:info)
- expect(@knife.ui).to receive(:msg).with(/knife/)
- @knife.print_help_topics
- end
-
- it "should shorten topics prefixed by knife-" do
- allow(@knife.ui).to receive(:msg)
- allow(@knife.ui).to receive(:info)
- expect(@knife.ui).to receive(:msg).with(/node/)
- @knife.print_help_topics
- end
-
- it "should not leave topics prefixed by knife-" do
- allow(@knife.ui).to receive(:msg)
- allow(@knife.ui).to receive(:info)
- expect(@knife.ui).not_to receive(:msg).with(/knife-node/)
- @knife.print_help_topics
- end
- end
-end