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 then
@config_file_name = arg
need_config_file_name = false
elsif arg =~ /^--config-file=(.*)/ then
@config_file_name = $1
elsif arg =~ /^--config-file$/ then
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
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
@hash = @hash.merge system_config
@hash = @hash.merge user_config
@hash = @hash.merge environment_config
@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
@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
Gem.sources = @hash[:sources] if @hash.key? :sources
handle_arguments arg_list
end