PHP 8.2.31
Preview: command_manager.rb Size: 4.62 KB
/proc/thread-self/root/opt/alt/ruby21/lib64/ruby/2.1.0/rubygems/command_manager.rb

#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++

require 'rubygems/command'
require 'rubygems/user_interaction'

##
# The command manager registers and installs all the individual sub-commands
# supported by the gem command.
#
# Extra commands can be provided by writing a rubygems_plugin.rb
# file in an installed gem.  You should register your command against the
# Gem::CommandManager instance, like this:
#
#   # file rubygems_plugin.rb
#   require 'rubygems/command_manager'
#
#   Gem::CommandManager.instance.register_command :edit
#
# You should put the implementation of your command in rubygems/commands.
#
#   # file rubygems/commands/edit_command.rb
#   class Gem::Commands::EditCommand < Gem::Command
#     # ...
#   end
#
# See Gem::Command for instructions on writing gem commands.

class Gem::CommandManager

  include Gem::UserInteraction

  BUILTIN_COMMANDS = [ # :nodoc:
    :build,
    :cert,
    :check,
    :cleanup,
    :contents,
    :dependency,
    :environment,
    :fetch,
    :generate_index,
    :help,
    :install,
    :list,
    :lock,
    :mirror,
    :outdated,
    :owner,
    :pristine,
    :push,
    :query,
    :rdoc,
    :search,
    :server,
    :sources,
    :specification,
    :stale,
    :uninstall,
    :unpack,
    :update,
    :which,
    :yank,
  ]

  ##
  # Return the authoritative instance of the command manager.

  def self.instance
    @command_manager ||= new
  end

  ##
  # Returns self. Allows a CommandManager instance to stand
  # in for the class itself.

  def instance
    self
  end

  ##
  # Reset the authoritative instance of the command manager.

  def self.reset
    @command_manager = nil
  end

  ##
  # Register all the subcommands supported by the gem command.

  def initialize
    require 'timeout'
    @commands = {}

    BUILTIN_COMMANDS.each do |name|
      register_command name
    end
  end

  ##
  # Register the Symbol +command+ as a gem command.

  def register_command(command, obj=false)
    @commands[command] = obj
  end

  ##
  # Unregister the Symbol +command+ as a gem command.

  def unregister_command(command)
    @commands.delete command
  end

  ##
  # Returns a Command instance for +command_name+

  def [](command_name)
    command_name = command_name.intern
    return nil if @commands[command_name].nil?
    @commands[command_name] ||= load_and_instantiate(command_name)
  end

  ##
  # Return a sorted list of all command names as strings.

  def command_names
    @commands.keys.collect {|key| key.to_s}.sort
  end

  ##
  # Run the command specified by +args+.

  def run(args, build_args=nil)
    process_args(args, build_args)
  rescue StandardError, Timeout::Error => ex
    alert_error "While executing gem ... (#{ex.class})\n    #{ex.to_s}"
    ui.backtrace ex

    terminate_interaction(1)
  rescue Interrupt
    alert_error "Interrupted"
    terminate_interaction(1)
  end

  def process_args(args, build_args=nil)
    if args.empty? then
      say Gem::Command::HELP
      terminate_interaction 1
    end

    case args.first
    when '-h', '--help' then
      say Gem::Command::HELP
      terminate_interaction 0
    when '-v', '--version' then
      say Gem::VERSION
      terminate_interaction 0
    when /^-/ then
      alert_error "Invalid option: #{args.first}.  See 'gem --help'."
      terminate_interaction 1
    else
      cmd_name = args.shift.downcase
      cmd = find_command cmd_name
      cmd.invoke_with_build_args args, build_args
    end
  end

  def find_command(cmd_name)
    possibilities = find_command_possibilities cmd_name

    if possibilities.size > 1 then
      raise Gem::CommandLineError,
            "Ambiguous command #{cmd_name} matches [#{possibilities.join(', ')}]"
    elsif possibilities.empty? then
      raise Gem::CommandLineError, "Unknown command #{cmd_name}"
    end

    self[possibilities.first]
  end

  def find_command_possibilities(cmd_name)
    len = cmd_name.length

    found = command_names.select { |name| cmd_name == name[0, len] }

    exact = found.find { |name| name == cmd_name }

    exact ? [exact] : found
  end

  private

  def load_and_instantiate(command_name)
    command_name = command_name.to_s
    const_name = command_name.capitalize.gsub(/_(.)/) { $1.upcase } << "Command"
    load_error = nil

    begin
      begin
        require "rubygems/commands/#{command_name}_command"
      rescue LoadError => e
        load_error = e
      end
      Gem::Commands.const_get(const_name).new
    rescue Exception => e
      e = load_error if load_error

      alert_error "Loading command: #{command_name} (#{e.class})\n\t#{e}"
      ui.backtrace e
    end
  end

end

Directory Contents

Dirs: 10 × Files: 59

Name Size Perms Modified Actions
commands DIR
- drwxr-xr-x 2024-03-03 22:43:11
Edit Download
core_ext DIR
- drwxr-xr-x 2024-03-03 22:43:11
Edit Download
ext DIR
- drwxr-xr-x 2024-03-03 22:43:11
Edit Download
package DIR
- drwxr-xr-x 2024-03-03 22:43:11
Edit Download
- drwxr-xr-x 2024-03-03 22:43:11
Edit Download
resolver DIR
- drwxr-xr-x 2024-03-03 22:43:11
Edit Download
security DIR
- drwxr-xr-x 2024-03-03 22:43:11
Edit Download
source DIR
- drwxr-xr-x 2024-03-03 22:43:11
Edit Download
ssl_certs DIR
- drwxr-xr-x 2024-03-03 22:43:11
Edit Download
util DIR
- drwxr-xr-x 2024-03-03 22:43:11
Edit Download
3.00 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
5.65 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
13.43 KB lrw-r--r-- 2012-11-30 16:27:52
Edit Download
4.62 KB lrw-r--r-- 2013-09-14 08:59:02
Edit Download
1.67 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
12.23 KB lrw-r--r-- 2023-07-26 14:19:40
Edit Download
3.64 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
7.77 KB lrw-r--r-- 2013-09-14 08:59:02
Edit Download
12.64 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
5.53 KB lrw-r--r-- 2013-02-27 23:20:57
Edit Download
1.70 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
3.04 KB lrw-r--r-- 2013-11-21 23:27:30
Edit Download
2.42 KB lrw-r--r-- 2013-11-19 00:34:13
Edit Download
5.87 KB lrw-r--r-- 2013-11-21 23:27:30
Edit Download
431 B lrw-r--r-- 2013-10-16 06:00:39
Edit Download
3.97 KB lrw-r--r-- 2013-09-18 21:29:41
Edit Download
1.96 KB lrw-r--r-- 2013-09-14 08:59:02
Edit Download
13.03 KB lrw-r--r-- 2013-10-16 00:14:16
Edit Download
21.42 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
4.20 KB lrw-r--r-- 2023-07-26 14:19:40
Edit Download
307 B lrw-r--r-- 2013-07-09 23:21:36
Edit Download
281 B lrw-r--r-- 2012-11-29 06:52:18
Edit Download
5.21 KB lrw-r--r-- 2013-09-14 08:59:02
Edit Download
3.36 KB lrw-r--r-- 2011-07-27 01:40:07
Edit Download
1.35 KB lrw-r--r-- 2012-11-29 06:52:18
Edit Download
2.23 KB lrw-r--r-- 2013-09-14 08:59:02
Edit Download
14.25 KB lrw-r--r-- 2023-07-26 14:19:40
Edit Download
3.77 KB lrw-r--r-- 2013-08-26 20:24:51
Edit Download
1.82 KB lrw-r--r-- 2013-09-14 08:59:02
Edit Download
6.05 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
269 B lrw-r--r-- 2013-10-20 01:33:19
Edit Download
763 B lrw-r--r-- 2013-07-09 22:34:58
Edit Download
7.75 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
9.46 KB lrw-r--r-- 2015-08-18 12:56:58
Edit Download
7.53 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
6.94 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
6.10 KB lrw-r--r-- 2013-12-08 01:22:39
Edit Download
12.46 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
1.11 KB lrw-r--r-- 2023-07-26 14:19:40
Edit Download
20.96 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
21.69 KB lrw-r--r-- 2013-11-10 17:51:40
Edit Download
4.90 KB lrw-r--r-- 2013-12-08 01:22:39
Edit Download
2.47 KB lrw-r--r-- 2013-11-19 00:34:13
Edit Download
111 B lrw-r--r-- 2013-09-14 08:59:02
Edit Download
93 B lrw-r--r-- 2013-09-14 08:59:02
Edit Download
70.80 KB lrw-r--r-- 2023-07-26 14:19:40
Edit Download
6.40 KB lrw-r--r-- 2013-11-19 00:34:13
Edit Download
3.10 KB lrw-r--r-- 2013-10-18 21:56:18
Edit Download
2.09 KB lrw-r--r-- 2013-12-19 22:09:19
Edit Download
35.62 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
8.37 KB lrw-r--r-- 2013-12-08 01:22:39
Edit Download
1.23 KB lrw-r--r-- 2011-07-27 01:40:07
Edit Download
8.69 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
762 B lrw-r--r-- 2013-10-20 01:33:19
Edit Download
14.40 KB lrw-r--r-- 2013-12-13 00:51:04
Edit Download
2.26 KB lrw-r--r-- 2013-11-25 19:14:49
Edit Download
4.18 KB lrw-r--r-- 2013-11-30 23:27:52
Edit Download
10.78 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
1.83 KB lrw-r--r-- 2013-09-14 08:59:02
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).