summaryrefslogtreecommitdiff
blob: b6ac5554b1214ec6fbf56f8b3302cb5c1987ec16 (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
# frozen_string_literal: true

# Gentoo defaults for rubygems 3.x
#
# Gentoo policy is to install all manually installed code into
# /usr/local and to keep /usr managed by Gentoo. This policy file
# ensures that all manually installed gems using "gem install" as root
# are installed in /usr/local. Gentoo gems are installed in /usr.
module Gem
  class << self
    def gentoo_gems_dir
      RbConfig::CONFIG['sitelibdir'].gsub('site_ruby', 'gems')
    end

    def gentoo_bindir
      Process.euid.zero? ? '@GENTOO_PORTAGE_EPREFIX@/usr/local/bin' : File.join(user_home, 'bin')
    end

    def gentoo_local_dir
      gentoo_gems_dir.gsub('@GENTOO_PORTAGE_EPREFIX@/usr',
                           '@GENTOO_PORTAGE_EPREFIX@/usr/local')
    end

    def gentoo_install_dir
      Process.euid.zero? ? gentoo_local_dir : user_dir
    end

    undef :default_path
    def default_path
      path = []
      path << user_dir if user_home && File.exist?(user_home)
      path << default_dir
      path << vendor_dir if vendor_dir && File.directory?(vendor_dir)
      path << gentoo_local_dir
      path << gentoo_gems_dir
    end

    def operating_system_defaults
      options = "--install-dir #{gentoo_install_dir} --bindir #{gentoo_bindir}"
      {
        'install' => options,
        'uninstall' => options,
        'update' => options
      }
    end
  end
end