summaryrefslogtreecommitdiff
path: root/ruby_1_9_3/lib/rubygems/config_file.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ruby_1_9_3/lib/rubygems/config_file.rb')
-rw-r--r--ruby_1_9_3/lib/rubygems/config_file.rb375
1 files changed, 0 insertions, 375 deletions
diff --git a/ruby_1_9_3/lib/rubygems/config_file.rb b/ruby_1_9_3/lib/rubygems/config_file.rb
deleted file mode 100644
index 136e8b4610..0000000000
--- a/ruby_1_9_3/lib/rubygems/config_file.rb
+++ /dev/null
@@ -1,375 +0,0 @@
-#--
-# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
-# All rights reserved.
-# See LICENSE.txt for permissions.
-#++
-
-##
-# Gem::ConfigFile RubyGems options and gem command options from ~/.gemrc.
-#
-# ~/.gemrc is a YAML file that uses strings to match gem command arguments and
-# symbols to match RubyGems options.
-#
-# Gem command arguments use a String key that matches the command name and
-# allow you to specify default arguments:
-#
-# install: --no-rdoc --no-ri
-# update: --no-rdoc --no-ri
-#
-# You can use <tt>gem:</tt> to set default arguments for all commands.
-#
-# RubyGems options use symbol keys. Valid options are:
-#
-# +:backtrace+:: See #backtrace
-# +:benchmark+:: See #benchmark
-# +:sources+:: Sets Gem::sources
-# +:verbose+:: See #verbose
-
-require 'rbconfig'
-
-class Gem::ConfigFile
-
- DEFAULT_BACKTRACE = false
- DEFAULT_BENCHMARK = false
- DEFAULT_BULK_THRESHOLD = 1000
- DEFAULT_VERBOSITY = true
- DEFAULT_UPDATE_SOURCES = true
-
- ##
- # For Ruby packagers to set configuration defaults. Set in
- # rubygems/defaults/operating_system.rb
-
- OPERATING_SYSTEM_DEFAULTS = {}
-
- ##
- # For Ruby implementers to set configuration defaults. Set in
- # rubygems/defaults/#{RUBY_ENGINE}.rb
-
- PLATFORM_DEFAULTS = {}
-
- system_config_path =
- begin
- require "etc"
- Etc.sysconfdir
- rescue LoadError, NoMethodError
- begin
- # TODO: remove after we drop 1.8.7 and 1.9.1
- require 'Win32API'
-
- CSIDL_COMMON_APPDATA = 0x0023
- path = 0.chr * 260
- if RUBY_VERSION > '1.9' then
- SHGetFolderPath = Win32API.new 'shell32', 'SHGetFolderPath', 'PLPLP',
- 'L', :stdcall
- SHGetFolderPath.call nil, CSIDL_COMMON_APPDATA, nil, 1, path
- else
- SHGetFolderPath = Win32API.new 'shell32', 'SHGetFolderPath', 'LLLLP',
- 'L'
- SHGetFolderPath.call 0, CSIDL_COMMON_APPDATA, 0, 1, path
- end
-
- path.strip
- rescue LoadError
- RbConfig::CONFIG["sysconfdir"] || "/etc"
- end
- end
-
- SYSTEM_WIDE_CONFIG_FILE = File.join system_config_path, 'gemrc'
-
- ##
- # List of arguments supplied to the config file object.
-
- attr_reader :args
-
- ##
- # Where to look for gems (deprecated)
-
- attr_accessor :path
-
- ##
- # Where to install gems (deprecated)
-
- attr_accessor :home
-
- ##
- # True if we print backtraces on errors.
-
- attr_writer :backtrace
-
- ##
- # True if we are benchmarking this run.
-
- attr_accessor :benchmark
-
- ##
- # Bulk threshold value. If the number of missing gems are above this
- # threshold value, then a bulk download technique is used. (deprecated)
-
- attr_accessor :bulk_threshold
-
- ##
- # Verbose level of output:
- # * false -- No output
- # * true -- Normal output
- # * :loud -- Extra output
-
- attr_accessor :verbose
-
- ##
- # True if we want to update the SourceInfoCache every time, false otherwise
-
- attr_accessor :update_sources
-
- ##
- # API key for RubyGems.org
-
- attr_reader :rubygems_api_key
-
- ##
- # Hash of RubyGems.org and alternate API keys
-
- attr_reader :api_keys
-
- ##
- # openssl verify mode value, used for remote https connection
-
- attr_reader :ssl_verify_mode
-
- ##
- # Path name of directory or file of openssl CA certificate, used for remote https connection
-
- attr_reader :ssl_ca_cert
-
- ##
- # Create the config file object. +args+ is the list of arguments
- # from the command line.
- #
- # The following command line options are handled early here rather
- # than later at the time most command options are processed.
- #
- # <tt>--config-file</tt>, <tt>--config-file==NAME</tt>::
- # Obviously these need to be handled by the ConfigFile object to ensure we
- # get the right config file.
- #
- # <tt>--backtrace</tt>::
- # Backtrace needs to be turned on early so that errors before normal
- # option parsing can be properly handled.
- #
- # <tt>--debug</tt>::
- # Enable Ruby level debug messages. Handled early for the same reason as
- # --backtrace.
-
- def initialize(arg_list)
- @config_file_name = nil
- need_config_file_name = false
-
- arg_list = arg_list.map do |arg|
- if need_config_file_name then
- @config_file_name = arg
- need_config_file_name = false
- nil
- elsif arg =~ /^--config-file=(.*)/ then
- @config_file_name = $1
- nil
- elsif arg =~ /^--config-file$/ then
- need_config_file_name = true
- nil
- else
- arg
- end
- end.compact
-
- @backtrace = DEFAULT_BACKTRACE
- @benchmark = DEFAULT_BENCHMARK
- @bulk_threshold = DEFAULT_BULK_THRESHOLD
- @verbose = DEFAULT_VERBOSITY
- @update_sources = DEFAULT_UPDATE_SOURCES
-
- operating_system_config = Marshal.load Marshal.dump(OPERATING_SYSTEM_DEFAULTS)
- platform_config = Marshal.load Marshal.dump(PLATFORM_DEFAULTS)
- system_config = load_file SYSTEM_WIDE_CONFIG_FILE
- user_config = load_file config_file_name.dup.untaint
-
- @hash = operating_system_config.merge platform_config
- @hash = @hash.merge system_config
- @hash = @hash.merge user_config
-
- # HACK these override command-line args, which is bad
- @backtrace = @hash[:backtrace] if @hash.key? :backtrace
- @benchmark = @hash[:benchmark] if @hash.key? :benchmark
- @bulk_threshold = @hash[:bulk_threshold] if @hash.key? :bulk_threshold
- @home = @hash[:gemhome] if @hash.key? :gemhome
- @path = @hash[:gempath] if @hash.key? :gempath
- @update_sources = @hash[:update_sources] if @hash.key? :update_sources
- @verbose = @hash[:verbose] if @hash.key? :verbose
- @ssl_verify_mode = @hash[:ssl_verify_mode] if @hash.key? :ssl_verify_mode
- @ssl_ca_cert = @hash[:ssl_ca_cert] if @hash.key? :ssl_ca_cert
-
- load_api_keys
-
- Gem.sources = @hash[:sources] if @hash.key? :sources
- handle_arguments arg_list
- end
-
- ##
- # Location of RubyGems.org credentials
-
- def credentials_path
- File.join Gem.user_home, '.gem', 'credentials'
- end
-
- def load_api_keys
- @api_keys = if File.exist? credentials_path then
- load_file(credentials_path)
- else
- @hash
- end
- if @api_keys.key? :rubygems_api_key then
- @rubygems_api_key = @api_keys[:rubygems_api_key]
- @api_keys[:rubygems] = @api_keys.delete :rubygems_api_key unless @api_keys.key? :rubygems
- end
- end
-
- def rubygems_api_key=(api_key)
- config = load_file(credentials_path).merge(:rubygems_api_key => api_key)
-
- dirname = File.dirname credentials_path
- Dir.mkdir(dirname) unless File.exist? dirname
-
- Gem.load_yaml
-
- File.open(credentials_path, 'w') do |f|
- f.write config.to_yaml
- end
-
- @rubygems_api_key = api_key
- end
-
- def load_file(filename)
- Gem.load_yaml
-
- return {} unless filename and File.exist? filename
- begin
- YAML.load(File.read(filename))
- rescue ArgumentError
- warn "Failed to load #{config_file_name}"
- rescue Errno::EACCES
- warn "Failed to load #{config_file_name} due to permissions problem."
- end or {}
- end
-
- # True if the backtrace option has been specified, or debug is on.
- def backtrace
- @backtrace or $DEBUG
- end
-
- # The name of the configuration file.
- def config_file_name
- @config_file_name || Gem.config_file
- end
-
- # Delegates to @hash
- def each(&block)
- hash = @hash.dup
- hash.delete :update_sources
- hash.delete :verbose
- hash.delete :benchmark
- hash.delete :backtrace
- hash.delete :bulk_threshold
-
- yield :update_sources, @update_sources
- yield :verbose, @verbose
- yield :benchmark, @benchmark
- yield :backtrace, @backtrace
- yield :bulk_threshold, @bulk_threshold
-
- yield 'config_file_name', @config_file_name if @config_file_name
-
- hash.each(&block)
- end
-
- # Handle the command arguments.
- def handle_arguments(arg_list)
- @args = []
-
- arg_list.each do |arg|
- case arg
- when /^--(backtrace|traceback)$/ then
- @backtrace = true
- when /^--bench(mark)?$/ then
- @benchmark = true
- when /^--debug$/ then
- $DEBUG = true
- else
- @args << arg
- end
- end
- end
-
- # Really verbose mode gives you extra output.
- def really_verbose
- case verbose
- when true, false, nil then false
- else true
- end
- end
-
- # to_yaml only overwrites things you can't override on the command line.
- def to_yaml # :nodoc:
- yaml_hash = {}
- yaml_hash[:backtrace] = @hash.key?(:backtrace) ? @hash[:backtrace] :
- DEFAULT_BACKTRACE
- yaml_hash[:benchmark] = @hash.key?(:benchmark) ? @hash[:benchmark] :
- DEFAULT_BENCHMARK
- yaml_hash[:bulk_threshold] = @hash.key?(:bulk_threshold) ?
- @hash[:bulk_threshold] : DEFAULT_BULK_THRESHOLD
- yaml_hash[:sources] = Gem.sources
- yaml_hash[:update_sources] = @hash.key?(:update_sources) ?
- @hash[:update_sources] : DEFAULT_UPDATE_SOURCES
- yaml_hash[:verbose] = @hash.key?(:verbose) ? @hash[:verbose] :
- DEFAULT_VERBOSITY
-
- keys = yaml_hash.keys.map { |key| key.to_s }
- keys << 'debug'
- re = Regexp.union(*keys)
-
- @hash.each do |key, value|
- key = key.to_s
- next if key =~ re
- yaml_hash[key.to_s] = value
- end
-
- yaml_hash.to_yaml
- end
-
- # Writes out this config file, replacing its source.
- def write
- open config_file_name, 'w' do |io|
- io.write to_yaml
- end
- end
-
- # Return the configuration information for +key+.
- def [](key)
- @hash[key.to_s]
- end
-
- # Set configuration option +key+ to +value+.
- def []=(key, value)
- @hash[key.to_s] = value
- end
-
- def ==(other) # :nodoc:
- self.class === other and
- @backtrace == other.backtrace and
- @benchmark == other.benchmark and
- @bulk_threshold == other.bulk_threshold and
- @verbose == other.verbose and
- @update_sources == other.update_sources and
- @hash == other.hash
- end
-
- protected
-
- attr_reader :hash
-end