facter 4.3.1 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/docs/generate_cli.rb +1 -1
- data/lib/facter/custom_facts/core/execution/base.rb +2 -1
- data/lib/facter/custom_facts/core/execution/posix.rb +1 -1
- data/lib/facter/custom_facts/core/execution/windows.rb +2 -2
- data/lib/facter/custom_facts/core/file_loader.rb +23 -24
- data/lib/facter/custom_facts/core/legacy_facter.rb +1 -1
- data/lib/facter/custom_facts/util/normalization.rb +8 -23
- data/lib/facter/custom_facts/util/windows_root.rb +1 -1
- data/lib/facter/facts/debian/architecture.rb +1 -1
- data/lib/facter/facts/linux/hypervisors/kvm.rb +2 -2
- data/lib/facter/facts/linux/os/architecture.rb +1 -1
- data/lib/facter/facts/windows/hypervisors/kvm.rb +2 -2
- data/lib/facter/framework/cli/cli_launcher.rb +3 -3
- data/lib/facter/framework/config/fact_groups.rb +2 -2
- data/lib/facter/framework/core/fact_loaders/fact_loader.rb +1 -1
- data/lib/facter/framework/core/file_loader.rb +893 -38
- data/lib/facter/framework/detector/os_hierarchy.rb +1 -1
- data/lib/facter/framework/formatters/legacy_fact_formatter.rb +1 -1
- data/lib/facter/framework/formatters/yaml_fact_formatter.rb +2 -2
- data/lib/facter/patches/sysfilesystem/sys/statvfs.rb +4 -4
- data/lib/facter/resolvers/aix/architecture.rb +1 -1
- data/lib/facter/resolvers/aix/filesystem.rb +1 -1
- data/lib/facter/resolvers/aix/hardware.rb +1 -1
- data/lib/facter/resolvers/aix/memory.rb +1 -1
- data/lib/facter/resolvers/aix/mountpoints.rb +2 -2
- data/lib/facter/resolvers/aix/networking.rb +1 -1
- data/lib/facter/resolvers/aix/partitions.rb +2 -2
- data/lib/facter/resolvers/bsd/processors.rb +1 -1
- data/lib/facter/resolvers/freebsd/processors.rb +2 -2
- data/lib/facter/resolvers/linux/hostname.rb +2 -2
- data/lib/facter/resolvers/load_averages.rb +1 -1
- data/lib/facter/resolvers/lspci.rb +1 -1
- data/lib/facter/resolvers/networking.rb +1 -1
- data/lib/facter/resolvers/open_vz.rb +1 -1
- data/lib/facter/resolvers/os_release.rb +2 -2
- data/lib/facter/resolvers/selinux.rb +3 -3
- data/lib/facter/resolvers/solaris/filesystems.rb +1 -1
- data/lib/facter/resolvers/virt_what.rb +6 -6
- data/lib/facter/resolvers/windows/ffi/hardware_ffi.rb +2 -2
- data/lib/facter/resolvers/windows/ffi/identity_ffi.rb +1 -1
- data/lib/facter/resolvers/windows/ffi/kernel_ffi.rb +2 -2
- data/lib/facter/resolvers/windows/ffi/memory_ffi.rb +2 -2
- data/lib/facter/resolvers/windows/ffi/networking_ffi.rb +3 -3
- data/lib/facter/resolvers/windows/ffi/system32_ffi.rb +1 -1
- data/lib/facter/resolvers/windows/ffi/winnls_ffi.rb +1 -1
- data/lib/facter/resolvers/windows/hardware_architecture.rb +1 -1
- data/lib/facter/resolvers/windows/identity.rb +1 -1
- data/lib/facter/resolvers/windows/kernel.rb +1 -1
- data/lib/facter/resolvers/windows/memory.rb +1 -1
- data/lib/facter/resolvers/windows/networking.rb +1 -1
- data/lib/facter/resolvers/windows/system32.rb +1 -1
- data/lib/facter/resolvers/windows/timezone.rb +1 -1
- data/lib/facter/resolvers/windows/virtualization.rb +2 -2
- data/lib/facter/resolvers/xen.rb +1 -1
- data/lib/facter/util/facts/windows_release_finder.rb +2 -2
- data/lib/facter/util/linux/dhcp.rb +1 -1
- data/lib/facter/util/utils.rb +1 -1
- data/lib/facter/version.rb +1 -1
- data/lib/facter.rb +15 -6
- metadata +7 -7
@@ -95,7 +95,7 @@ module Facter
|
|
95
95
|
# quotation marks that come after \ are not removed
|
96
96
|
@log.debug('Remove unnecessary comma and quotation marks on root facts')
|
97
97
|
output.split("\n")
|
98
|
-
.map! { |line|
|
98
|
+
.map! { |line| /^[\s]+/.match?(line) ? line : line.gsub(/,$|(?<!\\)\"/, '').gsub('\\"', '"') }.join("\n")
|
99
99
|
end
|
100
100
|
end
|
101
101
|
end
|
@@ -52,9 +52,9 @@ module Facter
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def needs_quote?(value)
|
55
|
-
return false if
|
55
|
+
return false if /true|false/.match?(value)
|
56
56
|
return false if value[/^[0-9]+$/]
|
57
|
-
return true if
|
57
|
+
return true if /y|Y|yes|Yes|YES|n|N|no|No|NO|True|TRUE|False|FALSE|on|On|ON|off|Off|OFF|:/.match?(value)
|
58
58
|
return false if value[/[a-zA-Z]/]
|
59
59
|
return false if value[/[0-9]+\.[0-9]+/]
|
60
60
|
|
@@ -10,7 +10,7 @@ module Sys
|
|
10
10
|
# it the second time will make FFI log a warning message.
|
11
11
|
remove_instance_variable(:@layout) if @layout
|
12
12
|
|
13
|
-
if RbConfig::CONFIG['host_os']
|
13
|
+
if /darwin|osx|mach/i.match?(RbConfig::CONFIG['host_os'])
|
14
14
|
layout(
|
15
15
|
:f_bsize, :ulong,
|
16
16
|
:f_frsize, :ulong,
|
@@ -24,7 +24,7 @@ module Sys
|
|
24
24
|
:f_flag, :ulong,
|
25
25
|
:f_namemax, :ulong
|
26
26
|
)
|
27
|
-
elsif RbConfig::CONFIG['host']
|
27
|
+
elsif /bsd/i.match?(RbConfig::CONFIG['host'])
|
28
28
|
layout(
|
29
29
|
:f_bavail, :uint64,
|
30
30
|
:f_bfree, :uint64,
|
@@ -38,7 +38,7 @@ module Sys
|
|
38
38
|
:f_fsid, :ulong,
|
39
39
|
:f_namemax, :ulong
|
40
40
|
)
|
41
|
-
elsif RbConfig::CONFIG['host']
|
41
|
+
elsif /sunos|solaris/i.match?(RbConfig::CONFIG['host'])
|
42
42
|
layout(
|
43
43
|
:f_bsize, :ulong,
|
44
44
|
:f_frsize, :ulong,
|
@@ -55,7 +55,7 @@ module Sys
|
|
55
55
|
:f_fstr, [:char, 32],
|
56
56
|
:f_filler, [:ulong, 16]
|
57
57
|
)
|
58
|
-
elsif RbConfig::CONFIG['host']
|
58
|
+
elsif /i686/i.match?(RbConfig::CONFIG['host'])
|
59
59
|
layout(
|
60
60
|
:f_bsize, :ulong,
|
61
61
|
:f_frsize, :ulong,
|
@@ -18,7 +18,7 @@ module Facter
|
|
18
18
|
return if file_content.empty?
|
19
19
|
|
20
20
|
file_content = file_content.map do |line|
|
21
|
-
next if line
|
21
|
+
next if /#|%/.match?(line) # skip lines that are comments or defaultvfs line
|
22
22
|
|
23
23
|
line.split(' ').first
|
24
24
|
end
|
@@ -25,7 +25,7 @@ module Facter
|
|
25
25
|
|
26
26
|
result.each_line do |line|
|
27
27
|
@fact_list[:system] = populate_system(line, pagesize) if line.include?('memory')
|
28
|
-
@fact_list[:swap] = populate_swap(line, pagesize) if
|
28
|
+
@fact_list[:swap] = populate_swap(line, pagesize) if /pg\sspace/.match?(line)
|
29
29
|
end
|
30
30
|
|
31
31
|
@fact_list[fact_name]
|
@@ -19,7 +19,7 @@ module Facter
|
|
19
19
|
@fact_list[:mountpoints] = {}
|
20
20
|
output = Facter::Core::Execution.execute('mount', logger: log)
|
21
21
|
output.split("\n").drop(2).map do |line|
|
22
|
-
next if
|
22
|
+
next if /procfs|ahafs/.match?(line)
|
23
23
|
|
24
24
|
add_mount_points_fact(line)
|
25
25
|
end
|
@@ -40,7 +40,7 @@ module Facter
|
|
40
40
|
def retrieve_sizes_for_mounts
|
41
41
|
output = Facter::Core::Execution.execute('df -P', logger: log)
|
42
42
|
output.split("\n").drop(1).map do |line|
|
43
|
-
next if
|
43
|
+
next if /-\s+-\s+-/.match?(line)
|
44
44
|
|
45
45
|
mount_info = line.split("\s")
|
46
46
|
mount_info[3] = translate_to_bytes(mount_info[3])
|
@@ -43,7 +43,7 @@ module Facter
|
|
43
43
|
def populate_with_mtu_and_mac!(interfaces)
|
44
44
|
output = Facter::Core::Execution.execute('netstat -in', logger: log)
|
45
45
|
output.each_line do |line|
|
46
|
-
next if
|
46
|
+
next if /Name\s/.match?(line)
|
47
47
|
|
48
48
|
info = line.split("\s")
|
49
49
|
interface_name = info[0]
|
@@ -50,8 +50,8 @@ module Facter
|
|
50
50
|
}
|
51
51
|
mount = info_hash['MOUNT POINT']
|
52
52
|
label = info_hash['LABEL']
|
53
|
-
part_info[:mount] = mount unless %r{N/A}
|
54
|
-
part_info[:label] = label.strip unless /None
|
53
|
+
part_info[:mount] = mount unless %r{N/A}.match?(mount)
|
54
|
+
part_info[:label] = label.strip unless /None/.match?(label)
|
55
55
|
part_info
|
56
56
|
end
|
57
57
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative '../../../facter/resolvers/bsd/processors'
|
4
4
|
|
5
5
|
module Facter
|
6
6
|
module Resolvers
|
@@ -17,7 +17,7 @@ module Facter
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def collect_processors_info(fact_name)
|
20
|
-
|
20
|
+
require_relative '../../../facter/resolvers/freebsd/ffi/ffi_helper'
|
21
21
|
|
22
22
|
count = logical_count
|
23
23
|
model = processors_model
|
@@ -40,7 +40,7 @@ module Facter
|
|
40
40
|
output = Socket.gethostname || ''
|
41
41
|
if output.empty? || output['0.0.0.0']
|
42
42
|
begin
|
43
|
-
|
43
|
+
require_relative '../../../facter/util/resolvers/ffi/hostname'
|
44
44
|
|
45
45
|
output = Facter::Util::Resolvers::Ffi::Hostname.getffihostname
|
46
46
|
rescue LoadError => e
|
@@ -76,7 +76,7 @@ module Facter
|
|
76
76
|
end
|
77
77
|
|
78
78
|
def retrieve_fqdn_for_host_with_ffi(host)
|
79
|
-
|
79
|
+
require_relative '../../../facter/util/resolvers/ffi/hostname'
|
80
80
|
|
81
81
|
fqdn = Facter::Util::Resolvers::Ffi::Hostname.getffiaddrinfo(host)
|
82
82
|
log.debug("FFI getaddrinfo was called and it retrieved: #{fqdn}")
|
@@ -13,7 +13,7 @@ module Facter
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def read_load_averages(fact_name)
|
16
|
-
|
16
|
+
require_relative '../../facter/util/resolvers/ffi/load_averages'
|
17
17
|
|
18
18
|
log.debug('loading cpu load averages')
|
19
19
|
@fact_list[:load_averages] = %w[1m 5m 15m].zip(Facter::Util::Resolvers::Ffi::LoadAverages
|
@@ -26,7 +26,7 @@ module Facter
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def retrieve_vm(output)
|
29
|
-
output.each_line { |line| REGEX_VALUES.each { |key, value| return value if
|
29
|
+
output.each_line { |line| REGEX_VALUES.each { |key, value| return value if /#{key}/.match?(line) } }
|
30
30
|
|
31
31
|
nil
|
32
32
|
end
|
@@ -71,7 +71,7 @@ module Facter
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def extract_dhcp(interface_name, raw_data, parsed_interface_data)
|
74
|
-
return unless
|
74
|
+
return unless /status:\s+active/.match?(raw_data)
|
75
75
|
|
76
76
|
result = Facter::Core::Execution.execute("ipconfig getoption #{interface_name} " \
|
77
77
|
'server_identifier', logger: log)
|
@@ -63,13 +63,13 @@ module Facter
|
|
63
63
|
def process_version_id
|
64
64
|
return unless @fact_list[:version_id]
|
65
65
|
|
66
|
-
@fact_list[:version_id] = "#{@fact_list[:version_id]}.0" unless @fact_list[:version_id]
|
66
|
+
@fact_list[:version_id] = "#{@fact_list[:version_id]}.0" unless /\./.match?(@fact_list[:version_id])
|
67
67
|
end
|
68
68
|
|
69
69
|
def process_id
|
70
70
|
return unless @fact_list[:id]
|
71
71
|
|
72
|
-
@fact_list[:id] = 'opensuse' if @fact_list[:id]
|
72
|
+
@fact_list[:id] = 'opensuse' if /opensuse/i.match?(@fact_list[:id])
|
73
73
|
end
|
74
74
|
|
75
75
|
def process_name
|
@@ -26,7 +26,7 @@ module Facter
|
|
26
26
|
mountpoint = ''
|
27
27
|
|
28
28
|
output.each_line do |line|
|
29
|
-
next unless
|
29
|
+
next unless /selinuxfs/.match?(line)
|
30
30
|
|
31
31
|
mountpoint = line.split("\s")[1]
|
32
32
|
break
|
@@ -54,8 +54,8 @@ module Facter
|
|
54
54
|
file_lines = Facter::Util::FileHelper.safe_readlines('/etc/selinux/config')
|
55
55
|
|
56
56
|
file_lines.map do |line|
|
57
|
-
@fact_list[:config_mode] = line.split('=').last.strip if
|
58
|
-
@fact_list[:config_policy] = line.split('=').last.strip if
|
57
|
+
@fact_list[:config_mode] = line.split('=').last.strip if /^SELINUX=/.match?(line)
|
58
|
+
@fact_list[:config_policy] = line.split('=').last.strip if /^SELINUXTYPE=/.match?(line)
|
59
59
|
end
|
60
60
|
|
61
61
|
!file_lines.empty? ? true : false
|
@@ -18,7 +18,7 @@ module Facter
|
|
18
18
|
|
19
19
|
file_content = Facter::Core::Execution.execute('/usr/sbin/sysdef', logger: log)
|
20
20
|
files = file_content.split("\n").map do |line|
|
21
|
-
line.split('/').last if
|
21
|
+
line.split('/').last if /^fs\.*/.match?(line)
|
22
22
|
end
|
23
23
|
|
24
24
|
@fact_list[:file_systems] = files.compact.sort.join(',')
|
@@ -28,9 +28,9 @@ module Facter
|
|
28
28
|
return unless xen_info
|
29
29
|
|
30
30
|
xen_info = xen_info.to_s
|
31
|
-
return 'xenu' if
|
32
|
-
return 'xenhvm' if
|
33
|
-
return 'xen0' if
|
31
|
+
return 'xenu' if /xen-domu/.match?(xen_info)
|
32
|
+
return 'xenhvm' if /xen-hvm/.match?(xen_info)
|
33
|
+
return 'xen0' if /xen-dom0/.match?(xen_info)
|
34
34
|
end
|
35
35
|
|
36
36
|
def determine_other(output)
|
@@ -38,8 +38,8 @@ module Facter
|
|
38
38
|
other_vm = values.first
|
39
39
|
return unless other_vm
|
40
40
|
|
41
|
-
return 'zlinux' if
|
42
|
-
return retrieve_vserver if
|
41
|
+
return 'zlinux' if /ibm_systemz/.match?(other_vm)
|
42
|
+
return retrieve_vserver if /linux_vserver/.match?(other_vm)
|
43
43
|
return (values - ['redhat']).first if values.include?('redhat')
|
44
44
|
|
45
45
|
other_vm
|
@@ -53,7 +53,7 @@ module Facter
|
|
53
53
|
parts = line.split("\s")
|
54
54
|
next unless parts.size.equal?(2)
|
55
55
|
|
56
|
-
next unless parts[0]
|
56
|
+
next unless /^s_context:|^VxID:/.match?(parts[0])
|
57
57
|
return @fact_list[:vserver] = 'vserver_host' if parts[1] == '0'
|
58
58
|
|
59
59
|
return @fact_list[:vserver] = 'vserver'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
require_relative '../../../../facter/resolvers/windows/ffi/ffi'
|
4
|
+
require_relative '../../../../facter/resolvers/windows/ffi/system_info'
|
5
5
|
|
6
6
|
module HardwareFFI
|
7
7
|
extend FFI::Library
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
require_relative '../../../../facter/resolvers/windows/ffi/ffi'
|
4
|
+
require_relative '../../../../facter/resolvers/windows/ffi/os_version_info_ex'
|
5
5
|
|
6
6
|
module KernelFFI
|
7
7
|
extend FFI::Library
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
require_relative '../../../../facter/resolvers/windows/ffi/ffi'
|
4
|
+
require_relative '../../../../facter/resolvers/windows/ffi/performance_information'
|
5
5
|
|
6
6
|
module MemoryFFI
|
7
7
|
extend FFI::Library
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
require_relative '../../../../facter/resolvers/windows/ffi/ffi'
|
4
|
+
require_relative '../../../../facter/resolvers/windows/ffi/network_utils'
|
5
|
+
require_relative '../../../../facter/resolvers/windows/ffi/ip_adapter_addresses_lh'
|
6
6
|
|
7
7
|
module NetworkingFFI
|
8
8
|
extend FFI::Library
|
@@ -13,7 +13,7 @@ module Facter
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def read_hardware_information(fact_name)
|
16
|
-
|
16
|
+
require_relative '../../../facter/resolvers/windows/ffi/hardware_ffi'
|
17
17
|
|
18
18
|
sys_info_ptr = FFI::MemoryPointer.new(SystemInfo.size)
|
19
19
|
HardwareFFI::GetNativeSystemInfo(sys_info_ptr)
|
@@ -16,7 +16,7 @@ module Facter
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def find_username
|
19
|
-
|
19
|
+
require_relative '../../../facter/resolvers/windows/ffi/identity_ffi'
|
20
20
|
|
21
21
|
size_ptr = FFI::MemoryPointer.new(:win32_ulong, 1)
|
22
22
|
IdentityFFI::GetUserNameExW(NAME_SAM_COMPATIBLE, FFI::Pointer::NULL, size_ptr)
|
@@ -15,7 +15,7 @@ module Facter
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def read_os_version_information(fact_name)
|
18
|
-
|
18
|
+
require_relative '../../../facter/resolvers/windows/ffi/kernel_ffi'
|
19
19
|
|
20
20
|
ver_ptr = FFI::MemoryPointer.new(OsVersionInfoEx.size)
|
21
21
|
ver = OsVersionInfoEx.new(ver_ptr)
|
@@ -15,7 +15,7 @@ module Facter
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def read_performance_information
|
18
|
-
|
18
|
+
require_relative '../../../facter/resolvers/windows/ffi/memory_ffi'
|
19
19
|
|
20
20
|
state_ptr = FFI::MemoryPointer.new(PerformanceInformation.size)
|
21
21
|
if MemoryFFI::GetPerformanceInfo(state_ptr, state_ptr.size) == FFI::WIN32FALSE
|
@@ -15,7 +15,7 @@ module Facter
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def read_network_information(fact_name)
|
18
|
-
|
18
|
+
require_relative '../../../facter/resolvers/windows/ffi/networking_ffi'
|
19
19
|
|
20
20
|
size_ptr = FFI::MemoryPointer.new(NetworkingFFI::BUFFER_LENGTH)
|
21
21
|
adapter_addresses = FFI::MemoryPointer.new(IpAdapterAddressesLh.size, NetworkingFFI::BUFFER_LENGTH)
|
@@ -42,9 +42,9 @@ module Facter
|
|
42
42
|
manufacturer = comp.Manufacturer
|
43
43
|
if comp.Model =~ /^Virtual Machine/ && manufacturer =~ /^Microsoft/
|
44
44
|
'hyperv'
|
45
|
-
elsif
|
45
|
+
elsif /^Xen/.match?(manufacturer)
|
46
46
|
'xen'
|
47
|
-
elsif
|
47
|
+
elsif /^Amazon EC2/.match?(manufacturer)
|
48
48
|
'kvm'
|
49
49
|
else
|
50
50
|
'physical'
|
data/lib/facter/resolvers/xen.rb
CHANGED
@@ -13,7 +13,7 @@ module Facter
|
|
13
13
|
description = input[:description]
|
14
14
|
kernel_version = input[:kernel_version]
|
15
15
|
|
16
|
-
if
|
16
|
+
if /10.0/.match?(version)
|
17
17
|
check_version_10_11(consumerrel, kernel_version)
|
18
18
|
else
|
19
19
|
check_version_6(version, consumerrel) || check_version_5(version, consumerrel, description) || version
|
@@ -47,7 +47,7 @@ module Facter
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def check_version_5(version, consumerrel, description)
|
50
|
-
return unless
|
50
|
+
return unless /5.2/.match?(version)
|
51
51
|
return 'XP' if consumerrel
|
52
52
|
|
53
53
|
description == 'R2' ? '2003 R2' : '2003'
|
@@ -45,7 +45,7 @@ module Facter
|
|
45
45
|
|
46
46
|
lease_files.select do |file|
|
47
47
|
content = Facter::Util::FileHelper.safe_read("#{dir}#{file}", nil)
|
48
|
-
next unless
|
48
|
+
next unless /interface.*#{interface_name}/.match?(content)
|
49
49
|
|
50
50
|
dhcp = content.match(/dhcp-server-identifier ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/)
|
51
51
|
return dhcp[1] if dhcp
|
data/lib/facter/util/utils.rb
CHANGED
@@ -14,7 +14,7 @@ module Facter
|
|
14
14
|
|
15
15
|
def self.split_user_query(user_query)
|
16
16
|
queries = user_query.split('.')
|
17
|
-
queries.map! { |query|
|
17
|
+
queries.map! { |query| /^[0-9]+$/.match?(query) ? query.to_i : query }
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.deep_stringify_keys(object)
|
data/lib/facter/version.rb
CHANGED
data/lib/facter.rb
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
require 'pathname'
|
4
4
|
require_relative 'util/api_debugger' if ENV['API_DEBUG']
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
require_relative 'facter/version'
|
7
|
+
require_relative 'facter/framework/core/file_loader'
|
8
|
+
require_relative 'facter/framework/core/options/options_validator'
|
9
9
|
|
10
10
|
module Facter
|
11
11
|
class ResolveCustomFactError < StandardError; end
|
@@ -22,7 +22,7 @@ module Facter
|
|
22
22
|
#
|
23
23
|
# @api private
|
24
24
|
def resolve(args_as_string)
|
25
|
-
|
25
|
+
require_relative 'facter/framework/cli/cli_launcher'
|
26
26
|
|
27
27
|
args = args_as_string.split(' ')
|
28
28
|
Facter::OptionsValidator.validate(args)
|
@@ -380,7 +380,14 @@ module Facter
|
|
380
380
|
resolved_facts = Facter::FactManager.instance.resolve_facts
|
381
381
|
resolved_facts.reject! { |fact| fact.type == :custom && fact.value.nil? }
|
382
382
|
collection = Facter::FactCollection.new.build_fact_collection!(resolved_facts)
|
383
|
-
|
383
|
+
|
384
|
+
# Ensures order of keys in hash returned from Facter.to_hash() and
|
385
|
+
# Facter.resolve() is always stable
|
386
|
+
if collection.empty?
|
387
|
+
Hash[collection]
|
388
|
+
else
|
389
|
+
Hash[Facter::Utils.sort_hash_by_key(collection)]
|
390
|
+
end
|
384
391
|
end
|
385
392
|
|
386
393
|
# Check whether printing stack trace is enabled
|
@@ -510,8 +517,10 @@ module Facter
|
|
510
517
|
resolved_facts = Facter::FactManager.instance.resolve_facts(user_query)
|
511
518
|
resolved_facts.reject! { |fact| fact.type == :custom && fact.value.nil? }
|
512
519
|
|
520
|
+
# Ensures order of keys in hash returned from Facter.to_hash() and
|
521
|
+
# Facter.resolve() is always stable
|
513
522
|
if user_query.count.zero?
|
514
|
-
Facter::FactCollection.new.build_fact_collection!(resolved_facts)
|
523
|
+
Facter::Utils.sort_hash_by_key(Facter::FactCollection.new.build_fact_collection!(resolved_facts))
|
515
524
|
else
|
516
525
|
FormatterHelper.retrieve_facts_to_display_for_user_query(user_query, resolved_facts)
|
517
526
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: facter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-04-
|
11
|
+
date: 2023-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -16,20 +16,20 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '13.0'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: 13.0.6
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '13.0'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: 13.0.6
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rspec
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1085,7 +1085,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1085
1085
|
- !ruby/object:Gem::Version
|
1086
1086
|
version: '0'
|
1087
1087
|
requirements: []
|
1088
|
-
rubygems_version: 3.
|
1088
|
+
rubygems_version: 3.4.12
|
1089
1089
|
signing_key:
|
1090
1090
|
specification_version: 4
|
1091
1091
|
summary: Facter, a system inventory tool
|