1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/lib/rubygems/defaults.rb

278 lines
6.4 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
module Gem
DEFAULT_HOST = "https://rubygems.org".freeze
@post_install_hooks ||= []
@done_installing_hooks ||= []
@post_uninstall_hooks ||= []
@pre_uninstall_hooks ||= []
@pre_install_hooks ||= []
##
# An Array of the default sources that come with RubyGems
def self.default_sources
%w[https://rubygems.org/]
end
##
# Default spec directory path to be used if an alternate value is not
# specified in the environment
def self.default_spec_cache_dir
Support XDG_* (#2174) * Support XDG_CONFIG_HOME for gemrc. * Support XDG_DATA_HOME for .gem * Added test for XDG_DATA_HOME * Do not reuse environmental variable. * Unify .rdoc path to RDoc.home. * Support XDG_DATA_HOME for .rdoc * Ignore exists? * Extracted config_home path * Use XDG_CONFIG_HOME for default credential path * Fixed inconsistency location. * Fixed the broken tests. * Support XDG_CONFIG_HOME for irbrc * Introduce Gem.cache_home as XDG_CACHE_HOME * Use Gem.cache_home instead of Gem.config_home for the credential file of RubyGems. * Initialized the old configurations * Fixed test failure related the configuration initialization * restore XDG_DATA_HOME * Fixed the broken examples of bundler with XDG_* * Do not modify environmental variable on test file * Use XDG_DATA_HOME insted of XDG_CACHE_HOME for credential file * stub out Gem.data_home * Move dir accessor to defaults.rb file * Use XDG_DATA_HOME for signed gem features * Use XDG_DATA_HOME for spec cache * Do not rely on Gem.user_home * Gem.user_home is always exists. Don't need to use FileUitls.mkdir_p * Bump support version to RubyGems 3.2.0+ * Removed the needless fallback configuration * Fixed the inconsistency methods that are find_config_file and config_file * Use Gem.configuration.credentials_path instead of hard-coded path * gem_path is always provided * Removed the duplicated code of find_home * Also removed the duplicated code of user_home * use Gem::UNTAINT instead of untaint for surpressing the warnings * Use File.directory * Restore XDG_DATA_HOME * Use File.write
2020-04-23 06:16:06 -04:00
default_spec_cache_dir = File.join Gem.user_home, '.gem', 'specs'
unless File.exist?(default_spec_cache_dir)
default_spec_cache_dir = File.join Gem.data_home, 'gem', 'specs'
end
default_spec_cache_dir
end
##
# Default home directory path to be used if an alternate value is not
# specified in the environment
def self.default_dir
@default_dir ||= File.join(RbConfig::CONFIG['rubylibprefix'], 'gems', RbConfig::CONFIG['ruby_version'])
end
##
# Returns binary extensions dir for specified RubyGems base dir or nil
# if such directory cannot be determined.
#
# By default, the binary extensions are located side by side with their
# Ruby counterparts, therefore nil is returned
def self.default_ext_dir_for(base_dir)
nil
end
##
# Paths where RubyGems' .rb files and bin files are installed
def self.default_rubygems_dirs
nil # default to standard layout
end
##
# Path to specification files of default gems.
def self.default_specifications_dir
@default_specifications_dir ||= File.join(Gem.default_dir, "specifications", "default")
end
Support XDG_* (#2174) * Support XDG_CONFIG_HOME for gemrc. * Support XDG_DATA_HOME for .gem * Added test for XDG_DATA_HOME * Do not reuse environmental variable. * Unify .rdoc path to RDoc.home. * Support XDG_DATA_HOME for .rdoc * Ignore exists? * Extracted config_home path * Use XDG_CONFIG_HOME for default credential path * Fixed inconsistency location. * Fixed the broken tests. * Support XDG_CONFIG_HOME for irbrc * Introduce Gem.cache_home as XDG_CACHE_HOME * Use Gem.cache_home instead of Gem.config_home for the credential file of RubyGems. * Initialized the old configurations * Fixed test failure related the configuration initialization * restore XDG_DATA_HOME * Fixed the broken examples of bundler with XDG_* * Do not modify environmental variable on test file * Use XDG_DATA_HOME insted of XDG_CACHE_HOME for credential file * stub out Gem.data_home * Move dir accessor to defaults.rb file * Use XDG_DATA_HOME for signed gem features * Use XDG_DATA_HOME for spec cache * Do not rely on Gem.user_home * Gem.user_home is always exists. Don't need to use FileUitls.mkdir_p * Bump support version to RubyGems 3.2.0+ * Removed the needless fallback configuration * Fixed the inconsistency methods that are find_config_file and config_file * Use Gem.configuration.credentials_path instead of hard-coded path * gem_path is always provided * Removed the duplicated code of find_home * Also removed the duplicated code of user_home * use Gem::UNTAINT instead of untaint for surpressing the warnings * Use File.directory * Restore XDG_DATA_HOME * Use File.write
2020-04-23 06:16:06 -04:00
##
# Finds the user's home directory.
#--
# Some comments from the ruby-talk list regarding finding the home
# directory:
#
# I have HOME, USERPROFILE and HOMEDRIVE + HOMEPATH. Ruby seems
# to be depending on HOME in those code samples. I propose that
# it should fallback to USERPROFILE and HOMEDRIVE + HOMEPATH (at
# least on Win32).
#++
#--
#
#++
def self.find_home
Dir.home.dup
rescue
if Gem.win_platform?
File.expand_path File.join(ENV['HOMEDRIVE'] || ENV['SystemDrive'], '/')
else
File.expand_path "/"
end
end
private_class_method :find_home
##
# The home directory for the user.
def self.user_home
@user_home ||= find_home.tap(&Gem::UNTAINT)
end
##
# Path for gems in the user's home directory
def self.user_dir
Support XDG_* (#2174) * Support XDG_CONFIG_HOME for gemrc. * Support XDG_DATA_HOME for .gem * Added test for XDG_DATA_HOME * Do not reuse environmental variable. * Unify .rdoc path to RDoc.home. * Support XDG_DATA_HOME for .rdoc * Ignore exists? * Extracted config_home path * Use XDG_CONFIG_HOME for default credential path * Fixed inconsistency location. * Fixed the broken tests. * Support XDG_CONFIG_HOME for irbrc * Introduce Gem.cache_home as XDG_CACHE_HOME * Use Gem.cache_home instead of Gem.config_home for the credential file of RubyGems. * Initialized the old configurations * Fixed test failure related the configuration initialization * restore XDG_DATA_HOME * Fixed the broken examples of bundler with XDG_* * Do not modify environmental variable on test file * Use XDG_DATA_HOME insted of XDG_CACHE_HOME for credential file * stub out Gem.data_home * Move dir accessor to defaults.rb file * Use XDG_DATA_HOME for signed gem features * Use XDG_DATA_HOME for spec cache * Do not rely on Gem.user_home * Gem.user_home is always exists. Don't need to use FileUitls.mkdir_p * Bump support version to RubyGems 3.2.0+ * Removed the needless fallback configuration * Fixed the inconsistency methods that are find_config_file and config_file * Use Gem.configuration.credentials_path instead of hard-coded path * gem_path is always provided * Removed the duplicated code of find_home * Also removed the duplicated code of user_home * use Gem::UNTAINT instead of untaint for surpressing the warnings * Use File.directory * Restore XDG_DATA_HOME * Use File.write
2020-04-23 06:16:06 -04:00
gem_dir = File.join(Gem.user_home, ".gem")
gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir)
parts = [gem_dir, ruby_engine]
* ChangeLog: * lib/rubygems/basic_specification.rb (class Gem): * lib/rubygems/commands/contents_command.rb (prefix or only the files that are requir): * lib/rubygems/commands/install_command.rb (to write the specification by hand): * lib/rubygems/commands/setup_command.rb (class Gem): * lib/rubygems/commands/setup_command.rb (TEXT): * lib/rubygems/compatibility.rb (module Gem): * lib/rubygems/defaults.rb (module Gem): * lib/rubygems/deprecate.rb (module Gem): * lib/rubygems/installer.rb (class Gem): * lib/rubygems/platform.rb (class Gem): * lib/rubygems/rdoc.rb (class Gem): * lib/rubygems/request_set/lockfile.rb (class Gem): * lib/rubygems/resolver/installer_set.rb (class Gem): * lib/rubygems/resolver.rb (class Gem): * lib/rubygems/specification.rb (class Gem): * lib/rubygems/test_case.rb (class Gem): * lib/rubygems/test_case.rb (Also): * lib/rubygems/uninstaller.rb (class Gem): * lib/rubygems.rb (module Gem): * test/rubygems/test_gem.rb (class TestGem): * test/rubygems/test_gem_commands_contents_command.rb (lib): * test/rubygems/test_gem_commands_environment_command.rb (class TestGemCommandsEnvironmentCommand): * test/rubygems/test_gem_commands_install_command.rb (ERROR): * test/rubygems/test_gem_commands_update_command.rb (class TestGemCommandsUpdateCommand): * test/rubygems/test_gem_dependency_installer.rb (class TestGemDependencyInstaller): * test/rubygems/test_gem_installer.rb (load Gem): * test/rubygems/test_gem_installer.rb (gem): * test/rubygems/test_gem_request_set_lockfile.rb (GEM): * test/rubygems/test_gem_request_set_lockfile.rb (DEPENDENCIES): * test/rubygems/test_gem_specification.rb (dependencies): * test/rubygems/test_gem_specification.rb (duplicate dependency on b): * test/rubygems/test_gem_uninstaller.rb (class TestGemUninstaller): git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44515 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-06 20:19:28 -05:00
parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
File.join parts
end
Support XDG_* (#2174) * Support XDG_CONFIG_HOME for gemrc. * Support XDG_DATA_HOME for .gem * Added test for XDG_DATA_HOME * Do not reuse environmental variable. * Unify .rdoc path to RDoc.home. * Support XDG_DATA_HOME for .rdoc * Ignore exists? * Extracted config_home path * Use XDG_CONFIG_HOME for default credential path * Fixed inconsistency location. * Fixed the broken tests. * Support XDG_CONFIG_HOME for irbrc * Introduce Gem.cache_home as XDG_CACHE_HOME * Use Gem.cache_home instead of Gem.config_home for the credential file of RubyGems. * Initialized the old configurations * Fixed test failure related the configuration initialization * restore XDG_DATA_HOME * Fixed the broken examples of bundler with XDG_* * Do not modify environmental variable on test file * Use XDG_DATA_HOME insted of XDG_CACHE_HOME for credential file * stub out Gem.data_home * Move dir accessor to defaults.rb file * Use XDG_DATA_HOME for signed gem features * Use XDG_DATA_HOME for spec cache * Do not rely on Gem.user_home * Gem.user_home is always exists. Don't need to use FileUitls.mkdir_p * Bump support version to RubyGems 3.2.0+ * Removed the needless fallback configuration * Fixed the inconsistency methods that are find_config_file and config_file * Use Gem.configuration.credentials_path instead of hard-coded path * gem_path is always provided * Removed the duplicated code of find_home * Also removed the duplicated code of user_home * use Gem::UNTAINT instead of untaint for surpressing the warnings * Use File.directory * Restore XDG_DATA_HOME * Use File.write
2020-04-23 06:16:06 -04:00
##
# The path to standard location of the user's configuration directory.
def self.config_home
@config_home ||= (ENV["XDG_CONFIG_HOME"] || File.join(Gem.user_home, '.config'))
end
##
# Finds the user's config file
def self.find_config_file
gemrc = File.join Gem.user_home, '.gemrc'
if File.exist? gemrc
gemrc
else
File.join Gem.config_home, "gem", "gemrc"
end
end
##
# The path to standard location of the user's .gemrc file.
def self.config_file
@config_file ||= find_config_file.tap(&Gem::UNTAINT)
end
##
# The path to standard location of the user's cache directory.
def self.cache_home
@cache_home ||= (ENV["XDG_CACHE_HOME"] || File.join(Gem.user_home, '.cache'))
end
##
# The path to standard location of the user's data directory.
def self.data_home
@data_home ||= (ENV["XDG_DATA_HOME"] || File.join(Gem.user_home, '.local', 'share'))
end
##
# How String Gem paths should be split. Overridable for esoteric platforms.
def self.path_separator
File::PATH_SEPARATOR
end
##
# Default gem load path
def self.default_path
path = []
path << user_dir if user_home && File.exist?(user_home)
path << default_dir
path << vendor_dir if vendor_dir and File.directory? vendor_dir
path
end
##
# Deduce Ruby's --program-prefix and --program-suffix from its install name
def self.default_exec_format
* ChangeLog: * lib/rubygems/basic_specification.rb (class Gem): * lib/rubygems/commands/contents_command.rb (prefix or only the files that are requir): * lib/rubygems/commands/install_command.rb (to write the specification by hand): * lib/rubygems/commands/setup_command.rb (class Gem): * lib/rubygems/commands/setup_command.rb (TEXT): * lib/rubygems/compatibility.rb (module Gem): * lib/rubygems/defaults.rb (module Gem): * lib/rubygems/deprecate.rb (module Gem): * lib/rubygems/installer.rb (class Gem): * lib/rubygems/platform.rb (class Gem): * lib/rubygems/rdoc.rb (class Gem): * lib/rubygems/request_set/lockfile.rb (class Gem): * lib/rubygems/resolver/installer_set.rb (class Gem): * lib/rubygems/resolver.rb (class Gem): * lib/rubygems/specification.rb (class Gem): * lib/rubygems/test_case.rb (class Gem): * lib/rubygems/test_case.rb (Also): * lib/rubygems/uninstaller.rb (class Gem): * lib/rubygems.rb (module Gem): * test/rubygems/test_gem.rb (class TestGem): * test/rubygems/test_gem_commands_contents_command.rb (lib): * test/rubygems/test_gem_commands_environment_command.rb (class TestGemCommandsEnvironmentCommand): * test/rubygems/test_gem_commands_install_command.rb (ERROR): * test/rubygems/test_gem_commands_update_command.rb (class TestGemCommandsUpdateCommand): * test/rubygems/test_gem_dependency_installer.rb (class TestGemDependencyInstaller): * test/rubygems/test_gem_installer.rb (load Gem): * test/rubygems/test_gem_installer.rb (gem): * test/rubygems/test_gem_request_set_lockfile.rb (GEM): * test/rubygems/test_gem_request_set_lockfile.rb (DEPENDENCIES): * test/rubygems/test_gem_specification.rb (dependencies): * test/rubygems/test_gem_specification.rb (duplicate dependency on b): * test/rubygems/test_gem_uninstaller.rb (class TestGemUninstaller): git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44515 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-06 20:19:28 -05:00
exec_format = RbConfig::CONFIG['ruby_install_name'].sub('ruby', '%s') rescue '%s'
unless exec_format =~ /%s/
raise Gem::Exception,
"[BUG] invalid exec_format #{exec_format.inspect}, no %s"
end
exec_format
end
##
# The default directory for binaries
def self.default_bindir
RbConfig::CONFIG['bindir']
end
def self.ruby_engine
RUBY_ENGINE
end
##
# The default signing key path
def self.default_key_path
Support XDG_* (#2174) * Support XDG_CONFIG_HOME for gemrc. * Support XDG_DATA_HOME for .gem * Added test for XDG_DATA_HOME * Do not reuse environmental variable. * Unify .rdoc path to RDoc.home. * Support XDG_DATA_HOME for .rdoc * Ignore exists? * Extracted config_home path * Use XDG_CONFIG_HOME for default credential path * Fixed inconsistency location. * Fixed the broken tests. * Support XDG_CONFIG_HOME for irbrc * Introduce Gem.cache_home as XDG_CACHE_HOME * Use Gem.cache_home instead of Gem.config_home for the credential file of RubyGems. * Initialized the old configurations * Fixed test failure related the configuration initialization * restore XDG_DATA_HOME * Fixed the broken examples of bundler with XDG_* * Do not modify environmental variable on test file * Use XDG_DATA_HOME insted of XDG_CACHE_HOME for credential file * stub out Gem.data_home * Move dir accessor to defaults.rb file * Use XDG_DATA_HOME for signed gem features * Use XDG_DATA_HOME for spec cache * Do not rely on Gem.user_home * Gem.user_home is always exists. Don't need to use FileUitls.mkdir_p * Bump support version to RubyGems 3.2.0+ * Removed the needless fallback configuration * Fixed the inconsistency methods that are find_config_file and config_file * Use Gem.configuration.credentials_path instead of hard-coded path * gem_path is always provided * Removed the duplicated code of find_home * Also removed the duplicated code of user_home * use Gem::UNTAINT instead of untaint for surpressing the warnings * Use File.directory * Restore XDG_DATA_HOME * Use File.write
2020-04-23 06:16:06 -04:00
default_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
unless File.exist?(default_key_path)
default_key_path = File.join Gem.data_home, "gem", "gem-private_key.pem"
end
default_key_path
end
##
# The default signing certificate chain path
def self.default_cert_path
Support XDG_* (#2174) * Support XDG_CONFIG_HOME for gemrc. * Support XDG_DATA_HOME for .gem * Added test for XDG_DATA_HOME * Do not reuse environmental variable. * Unify .rdoc path to RDoc.home. * Support XDG_DATA_HOME for .rdoc * Ignore exists? * Extracted config_home path * Use XDG_CONFIG_HOME for default credential path * Fixed inconsistency location. * Fixed the broken tests. * Support XDG_CONFIG_HOME for irbrc * Introduce Gem.cache_home as XDG_CACHE_HOME * Use Gem.cache_home instead of Gem.config_home for the credential file of RubyGems. * Initialized the old configurations * Fixed test failure related the configuration initialization * restore XDG_DATA_HOME * Fixed the broken examples of bundler with XDG_* * Do not modify environmental variable on test file * Use XDG_DATA_HOME insted of XDG_CACHE_HOME for credential file * stub out Gem.data_home * Move dir accessor to defaults.rb file * Use XDG_DATA_HOME for signed gem features * Use XDG_DATA_HOME for spec cache * Do not rely on Gem.user_home * Gem.user_home is always exists. Don't need to use FileUitls.mkdir_p * Bump support version to RubyGems 3.2.0+ * Removed the needless fallback configuration * Fixed the inconsistency methods that are find_config_file and config_file * Use Gem.configuration.credentials_path instead of hard-coded path * gem_path is always provided * Removed the duplicated code of find_home * Also removed the duplicated code of user_home * use Gem::UNTAINT instead of untaint for surpressing the warnings * Use File.directory * Restore XDG_DATA_HOME * Use File.write
2020-04-23 06:16:06 -04:00
default_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
unless File.exist?(default_cert_path)
default_cert_path = File.join Gem.data_home, "gem", "gem-public_cert.pem"
end
default_cert_path
end
##
# Install extensions into lib as well as into the extension directory.
def self.install_extension_in_lib # :nodoc:
true
end
##
# Directory where vendor gems are installed.
def self.vendor_dir # :nodoc:
if vendor_dir = ENV['GEM_VENDOR']
return vendor_dir.dup
end
return nil unless RbConfig::CONFIG.key? 'vendordir'
File.join RbConfig::CONFIG['vendordir'], 'gems',
RbConfig::CONFIG['ruby_version']
end
##
# Default options for gem commands for Ruby packagers.
#
# The options here should be structured as an array of string "gem"
# command names as keys and a string of the default options as values.
#
# Example:
#
# def self.operating_system_defaults
# {
# 'install' => '--no-rdoc --no-ri --env-shebang',
# 'update' => '--no-rdoc --no-ri --env-shebang'
# }
# end
def self.operating_system_defaults
{}
end
##
# Default options for gem commands for Ruby implementers.
#
# The options here should be structured as an array of string "gem"
# command names as keys and a string of the default options as values.
#
# Example:
#
# def self.platform_defaults
# {
# 'install' => '--no-rdoc --no-ri --env-shebang',
# 'update' => '--no-rdoc --no-ri --env-shebang'
# }
# end
def self.platform_defaults
{}
end
end