new(args)
public
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.
--config-file, --config-file==NAME |
Obviously these need to be handled by the ConfigFile object to ensure we
get the right config file.
|
--backtrace |
Backtrace needs to be turned on early
so that errors before normal option parsing can be properly handled.
|
--debug |
Enable Ruby level debug messages.
Handled early for the same reason as –backtrace.
|
Show source
def initialize(args)
@config_file_name = nil
need_config_file_name = false
arg_list = []
args.each do |arg|
if need_config_file_name
@config_file_name = arg
need_config_file_name = false
elsif arg =~ /^--config-file=(.*)/
@config_file_name = $1
elsif arg =~ /^--config-file$/
need_config_file_name = true
else
arg_list << arg
end
end
@backtrace = DEFAULT_BACKTRACE
@bulk_threshold = DEFAULT_BULK_THRESHOLD
@verbose = DEFAULT_VERBOSITY
@update_sources = DEFAULT_UPDATE_SOURCES
@concurrent_downloads = DEFAULT_CONCURRENT_DOWNLOADS
@cert_expiration_length_days = DEFAULT_CERT_EXPIRATION_LENGTH_DAYS
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
environment_config = (ENV['GEMRC'] || '').split(/[:;]/).inject({}) do |result, file|
result.merge load_file file
end
@hash = operating_system_config.merge platform_config
unless arg_list.index '--norc'
@hash = @hash.merge system_config
@hash = @hash.merge user_config
@hash = @hash.merge environment_config
end
@backtrace = @hash[:backtrace] if @hash.key? :backtrace
@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
@disable_default_gem_server = @hash[:disable_default_gem_server] if @hash.key? :disable_default_gem_server
@sources = @hash[:sources] if @hash.key? :sources
@cert_expiration_length_days = @hash[:cert_expiration_length_days] if @hash.key? :cert_expiration_length_days
@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
@ssl_client_cert = @hash[:ssl_client_cert] if @hash.key? :ssl_client_cert
@api_keys = nil
@rubygems_api_key = nil
handle_arguments arg_list
end