"...lib/facter/lib/puppet/stdlib/lib/facter/root_home.rb" did not exist on "1042df79ab6e547769d2f35b7f58142943690f3c"
root_home.rb 1.27 KB
Newer Older
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
# frozen_string_literal: true

# root_home.rb
module Facter::Util::RootHome
  # @summary
  #   A facter fact to determine the root home directory.
  #   This varies on PE supported platforms and may be
  #   reconfigured by the end user.
  class << self
    # determines the root home directory
    def returnt_root_home
      root_ent = Facter::Util::Resolution.exec('getent passwd root')
      # The home directory is the sixth element in the passwd entry
      # If the platform doesn't have getent, root_ent will be nil and we should
      # return it straight away.
      root_ent && root_ent.split(':')[5]
    end
  end
end

Facter.add(:root_home) do
  setcode { Facter::Util::RootHome.returnt_root_home }
end

Facter.add(:root_home) do
  confine kernel: :darwin
  setcode do
    str = Facter::Util::Resolution.exec('dscacheutil -q user -a name root')
    hash = {}
    str.split("\n").each do |pair|
      key, value = pair.split(%r{:})
      hash[key] = value
    end
    hash['dir'].strip
  end
end

Facter.add(:root_home) do
  confine kernel: :aix
  root_home = nil
  setcode do
    str = Facter::Util::Resolution.exec('lsuser -c -a home root')
    str&.split("\n")&.each do |line|
      next if %r{^#}.match?(line)
      root_home = line.split(%r{:})[1]
    end
    root_home
  end
end