summaryrefslogtreecommitdiff
path: root/lib/rubygems/defaults.rb
blob: d6732adbfa6165b8d6459c4ed4dfd4f59332d03a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
module Gem

  # TODO: move this whole file back into rubygems.rb

  @post_install_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[http://rubygems.org/]
  end

  ##
  # Default home directory path to be used if an alternate value is not
  # specified in the environment

  def self.default_dir
    path = if defined? RUBY_FRAMEWORK_VERSION then
             [
               File.dirname(ConfigMap[:sitedir]),
               'Gems',
               ConfigMap[:ruby_version]
             ]
           elsif ConfigMap[:rubylibprefix] then
             [
              ConfigMap[:rubylibprefix],
              'gems',
              ConfigMap[:ruby_version]
             ]
           else
             [
               ConfigMap[:libdir],
               ruby_engine,
               'gems',
               ConfigMap[:ruby_version]
             ]
           end

    @default_dir ||= File.join(*path)
  end

  ##
  # Paths where RubyGems' .rb files and bin files are installed

  def self.default_rubygems_dirs
    nil # default to standard layout
  end

  ##
  # Path for gems in the user's home directory

  def self.user_dir
    File.join Gem.user_home, '.gem', ruby_engine, ConfigMap[:ruby_version]
  end

  ##
  # Default gem load path

  def self.default_path
    if File.exist? Gem.user_home then
      [user_dir, default_dir]
    else
      [default_dir]
    end
  end

  ##
  # Deduce Ruby's --program-prefix and --program-suffix from its install name

  def self.default_exec_format
    exec_format = ConfigMap[:ruby_install_name].sub('ruby', '%s') rescue '%s'

    unless exec_format =~ /%s/ then
      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
    if defined? RUBY_FRAMEWORK_VERSION then # mac framework support
      '/usr/bin'
    else # generic install
      ConfigMap[:bindir]
    end
  end

  ##
  # The default system-wide source info cache directory

  def self.default_system_source_cache_dir
    File.join(Gem.dir, 'source_cache')
  end

  ##
  # The default user-specific source info cache directory

  def self.default_user_source_cache_dir
    #
    # NOTE Probably an argument for moving this to per-ruby supported dirs like
    # user_dir
    #
    File.join(Gem.user_home, '.gem', 'source_cache')
  end

  ##
  # A wrapper around RUBY_ENGINE const that may not be defined

  def self.ruby_engine
    if defined? RUBY_ENGINE then
      RUBY_ENGINE
    else
      'ruby'
    end
  end
end