From: Jakub Jirutka Date: Fri, 26 Mar 2021 23:17:29 +0100 Subject: [PATCH] Fix --help when man pages are moved out * Allow to move man pages from the gem's directory to the standard system location (/usr/share/man) without breaking `bundler --help`. * Fallback to the bundled ronn pages when the man command is available, but the bundler man pages are not (i.e. ruby-bundler-doc is not installed). * Execute man with '-c' option to print the man page to the terminal instead of using pager. --- a/lib/bundler/cli.rb +++ b/lib/bundler/cli.rb @@ -118,16 +118,17 @@ end man_path = File.expand_path("man", __dir__) - man_pages = Hash[Dir.glob(File.join(man_path, "**", "*")).grep(/.*\.\d*\Z/).collect do |f| - [File.basename(f, ".*"), f] + man_pages = Hash[Dir.glob(File.join(man_path, "**", "*")).grep(/.*\.\d*\.ronn\Z/).collect do |f| + man_name = File.basename(f, ".ronn") + [File.basename(man_name, ".*"), man_name] end] if man_pages.include?(command) man_page = man_pages[command] - if Bundler.which("man") && man_path !~ %r{^file:/.+!/META-INF/jruby.home/.+} - Kernel.exec "man #{man_page}" + if Bundler.which("man") && Kernel.system("man -w #{command} >/dev/null 2>&1") && man_path !~ %r{^file:/.+!/META-INF/jruby.home/.+} + Kernel.exec "man -c #{command}" else - puts File.read("#{man_path}/#{File.basename(man_page)}.ronn") + puts File.read("#{man_path}/#{man_page}.ronn") end elsif command_path = Bundler.which("bundler-#{cli}") Kernel.exec(command_path, "--help")