require 'rubygems/command_manager' require 'rubygems/installer' require 'rubygems/version' require 'nlmt-wrappers' require 'nlmt-wrappers/specification' class WrappersCommand < Gem::Command def initialize super 'regenerate_binstubs', 'Re run generation of environment wrappers for gems.' end def arguments # :nodoc: "regenerate regenerate environment wrappers for current Gem.home" end def usage # :nodoc: "#{program_name} [regenerate]" end def defaults_str # :nodoc: "" end def description # :nodoc: <<-DOC Show (default) or regenerate environment wrappers for current 'GEM_HOME'. DOC end def execute args = options[:args] || [] subcommand = args.shift || '' case subcommand when '', 'show' args.empty? ? execute_show : execute_show_path(args.first) when 'regenerate' execute_regenerate(args) when FileExist execute_regenerate([File.expand_path(subcommand)]) else execute_unknown subcommand end end def execute_show_path(exe) $stdout.puts gem_wrappers.wrapper_path(exe) end def execute_show list = gem_wrappers.installed_wrappers $stdout.puts description $stdout.puts " Wrappers path: #{gem_wrappers.wrappers_path}" $stdout.puts "Environment file: #{gem_wrappers.environment_file}" $stdout.puts " Executables: #{list.join(", ")}" end def execute_unknown(subcommand) $stderr.puts "Unknown wrapper subcommand: #{subcommand}" $stdout.puts description false end def execute_regenerate(list = []) list = gem_wrappers.gems_executables if list.empty? execute_show(list) if ENV['GEM_WRAPPERS_DEBUG'] gem_wrappers.install(list) end private def gem_wrappers @gem_wrappers ||= NlmtWrappers end end require 'nlmt-wrappers/command/file_exist'