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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/lib/docs/generate_cli.rb +1 -1
  3. data/lib/facter/custom_facts/core/execution/base.rb +2 -1
  4. data/lib/facter/custom_facts/core/execution/posix.rb +1 -1
  5. data/lib/facter/custom_facts/core/execution/windows.rb +2 -2
  6. data/lib/facter/custom_facts/core/file_loader.rb +23 -24
  7. data/lib/facter/custom_facts/core/legacy_facter.rb +1 -1
  8. data/lib/facter/custom_facts/util/normalization.rb +8 -23
  9. data/lib/facter/custom_facts/util/windows_root.rb +1 -1
  10. data/lib/facter/facts/debian/architecture.rb +1 -1
  11. data/lib/facter/facts/linux/hypervisors/kvm.rb +2 -2
  12. data/lib/facter/facts/linux/os/architecture.rb +1 -1
  13. data/lib/facter/facts/windows/hypervisors/kvm.rb +2 -2
  14. data/lib/facter/framework/cli/cli_launcher.rb +3 -3
  15. data/lib/facter/framework/config/fact_groups.rb +2 -2
  16. data/lib/facter/framework/core/fact_loaders/fact_loader.rb +1 -1
  17. data/lib/facter/framework/core/file_loader.rb +893 -38
  18. data/lib/facter/framework/detector/os_hierarchy.rb +1 -1
  19. data/lib/facter/framework/formatters/legacy_fact_formatter.rb +1 -1
  20. data/lib/facter/framework/formatters/yaml_fact_formatter.rb +2 -2
  21. data/lib/facter/patches/sysfilesystem/sys/statvfs.rb +4 -4
  22. data/lib/facter/resolvers/aix/architecture.rb +1 -1
  23. data/lib/facter/resolvers/aix/filesystem.rb +1 -1
  24. data/lib/facter/resolvers/aix/hardware.rb +1 -1
  25. data/lib/facter/resolvers/aix/memory.rb +1 -1
  26. data/lib/facter/resolvers/aix/mountpoints.rb +2 -2
  27. data/lib/facter/resolvers/aix/networking.rb +1 -1
  28. data/lib/facter/resolvers/aix/partitions.rb +2 -2
  29. data/lib/facter/resolvers/bsd/processors.rb +1 -1
  30. data/lib/facter/resolvers/freebsd/processors.rb +2 -2
  31. data/lib/facter/resolvers/linux/hostname.rb +2 -2
  32. data/lib/facter/resolvers/load_averages.rb +1 -1
  33. data/lib/facter/resolvers/lspci.rb +1 -1
  34. data/lib/facter/resolvers/networking.rb +1 -1
  35. data/lib/facter/resolvers/open_vz.rb +1 -1
  36. data/lib/facter/resolvers/os_release.rb +2 -2
  37. data/lib/facter/resolvers/selinux.rb +3 -3
  38. data/lib/facter/resolvers/solaris/filesystems.rb +1 -1
  39. data/lib/facter/resolvers/virt_what.rb +6 -6
  40. data/lib/facter/resolvers/windows/ffi/hardware_ffi.rb +2 -2
  41. data/lib/facter/resolvers/windows/ffi/identity_ffi.rb +1 -1
  42. data/lib/facter/resolvers/windows/ffi/kernel_ffi.rb +2 -2
  43. data/lib/facter/resolvers/windows/ffi/memory_ffi.rb +2 -2
  44. data/lib/facter/resolvers/windows/ffi/networking_ffi.rb +3 -3
  45. data/lib/facter/resolvers/windows/ffi/system32_ffi.rb +1 -1
  46. data/lib/facter/resolvers/windows/ffi/winnls_ffi.rb +1 -1
  47. data/lib/facter/resolvers/windows/hardware_architecture.rb +1 -1
  48. data/lib/facter/resolvers/windows/identity.rb +1 -1
  49. data/lib/facter/resolvers/windows/kernel.rb +1 -1
  50. data/lib/facter/resolvers/windows/memory.rb +1 -1
  51. data/lib/facter/resolvers/windows/networking.rb +1 -1
  52. data/lib/facter/resolvers/windows/system32.rb +1 -1
  53. data/lib/facter/resolvers/windows/timezone.rb +1 -1
  54. data/lib/facter/resolvers/windows/virtualization.rb +2 -2
  55. data/lib/facter/resolvers/xen.rb +1 -1
  56. data/lib/facter/util/facts/windows_release_finder.rb +2 -2
  57. data/lib/facter/util/linux/dhcp.rb +1 -1
  58. data/lib/facter/util/utils.rb +1 -1
  59. data/lib/facter/version.rb +1 -1
  60. data/lib/facter.rb +15 -6
  61. metadata +7 -7
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'facter/config'
3
+ require_relative '../../../facter/config'
4
4
 
5
5
  module Facter
6
6
  class OsHierarchy
@@ -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| line =~ /^[\s]+/ ? line : line.gsub(/,$|(?<!\\)\"/, '').gsub('\\"', '"') }.join("\n")
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 value =~ /true|false/
55
+ return false if /true|false/.match?(value)
56
56
  return false if value[/^[0-9]+$/]
57
- return true if value =~ /y|Y|yes|Yes|YES|n|N|no|No|NO|True|TRUE|False|FALSE|on|On|ON|off|Off|OFF|:/
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'] =~ /darwin|osx|mach/i
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'] =~ /bsd/i
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'] =~ /sunos|solaris/i
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'] =~ /i686/i
58
+ elsif /i686/i.match?(RbConfig::CONFIG['host'])
59
59
  layout(
60
60
  :f_bsize, :ulong,
61
61
  :f_frsize, :ulong,
@@ -14,7 +14,7 @@ module Facter
14
14
  end
15
15
 
16
16
  def read_architecture(fact_name)
17
- require 'facter/util/aix/odm_query'
17
+ require_relative '../../../facter/util/aix/odm_query'
18
18
 
19
19
  proc_number = read_proc
20
20
  odmquery = Facter::Util::Aix::ODMQuery.new
@@ -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 =~ /#|%/ # skip lines that are comments or defaultvfs line
21
+ next if /#|%/.match?(line) # skip lines that are comments or defaultvfs line
22
22
 
23
23
  line.split(' ').first
24
24
  end
@@ -14,7 +14,7 @@ module Facter
14
14
  end
15
15
 
16
16
  def read_hardware(fact_name)
17
- require 'facter/util/aix/odm_query'
17
+ require_relative '../../../facter/util/aix/odm_query'
18
18
  odmquery = Facter::Util::Aix::ODMQuery.new
19
19
  odmquery
20
20
  .equals('name', 'sys0')
@@ -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 line =~ /pg\sspace/
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 line =~ /procfs|ahafs/
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 line =~ /-\s+-\s+-/
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 line =~ /Name\s/
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} =~ mount
54
- part_info[:label] = label.strip unless /None/ =~ label
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
 
@@ -15,7 +15,7 @@ module Facter
15
15
  end
16
16
 
17
17
  def collect_processors_info(fact_name)
18
- require 'facter/resolvers/bsd/ffi/ffi_helper'
18
+ require_relative '../../../facter/resolvers/bsd/ffi/ffi_helper'
19
19
 
20
20
  count = logical_count
21
21
  model = processor_model
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'facter/resolvers/bsd/processors'
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
- require 'facter/resolvers/freebsd/ffi/ffi_helper'
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
- require 'facter/util/resolvers/ffi/hostname'
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
- require 'facter/util/resolvers/ffi/hostname'
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
- require 'facter/util/resolvers/ffi/load_averages'
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 line =~ /#{key}/ } }
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 raw_data =~ /status:\s+active/
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)
@@ -29,7 +29,7 @@ module Facter
29
29
  parts = line.split("\s")
30
30
  next unless parts.size.equal?(2)
31
31
 
32
- next unless /^envID:/ =~ parts[0]
32
+ next unless /^envID:/.match?(parts[0])
33
33
 
34
34
  @fact_list[:id] = parts[1]
35
35
 
@@ -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] =~ /opensuse/i
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 line =~ /selinuxfs/
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 line =~ /^SELINUX=/
58
- @fact_list[:config_policy] = line.split('=').last.strip if line =~ /^SELINUXTYPE=/
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 line =~ /^fs\.*/
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 xen_info =~ /xen-domu/
32
- return 'xenhvm' if xen_info =~ /xen-hvm/
33
- return 'xen0' if xen_info =~ /xen-dom0/
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 other_vm =~ /ibm_systemz/
42
- return retrieve_vserver if other_vm =~ /linux_vserver/
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] =~ /^s_context:|^VxID:/
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
- require 'facter/resolvers/windows/ffi/ffi'
4
- require 'facter/resolvers/windows/ffi/system_info'
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,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'facter/resolvers/windows/ffi/ffi'
3
+ require_relative '../../../../facter/resolvers/windows/ffi/ffi'
4
4
 
5
5
  module IdentityFFI
6
6
  extend FFI::Library
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'facter/resolvers/windows/ffi/ffi'
4
- require 'facter/resolvers/windows/ffi/os_version_info_ex'
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
- require 'facter/resolvers/windows/ffi/ffi'
4
- require 'facter/resolvers/windows/ffi/performance_information'
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
- require 'facter/resolvers/windows/ffi/ffi'
4
- require 'facter/resolvers/windows/ffi/network_utils'
5
- require 'facter/resolvers/windows/ffi/ip_adapter_addresses_lh'
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
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'facter/resolvers/windows/ffi/ffi'
3
+ require_relative '../../../../facter/resolvers/windows/ffi/ffi'
4
4
 
5
5
  module System32FFI
6
6
  extend FFI::Library
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'facter/resolvers/windows/ffi/ffi'
3
+ require_relative '../../../../facter/resolvers/windows/ffi/ffi'
4
4
 
5
5
  module WinnlsFFI
6
6
  extend FFI::Library
@@ -13,7 +13,7 @@ module Facter
13
13
  end
14
14
 
15
15
  def read_hardware_information(fact_name)
16
- require 'facter/resolvers/windows/ffi/hardware_ffi'
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
- require 'facter/resolvers/windows/ffi/identity_ffi'
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
- require 'facter/resolvers/windows/ffi/kernel_ffi'
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
- require 'facter/resolvers/windows/ffi/memory_ffi'
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
- require 'facter/resolvers/windows/ffi/networking_ffi'
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)
@@ -15,7 +15,7 @@ module Facter
15
15
  end
16
16
 
17
17
  def retrieve_windows_binaries_path
18
- require 'facter/resolvers/windows/ffi/system32_ffi'
18
+ require_relative '../../../facter/resolvers/windows/ffi/system32_ffi'
19
19
 
20
20
  windows_path = ENV['SystemRoot']
21
21
 
@@ -31,7 +31,7 @@ module Facter
31
31
  end
32
32
 
33
33
  def codepage_from_api
34
- require 'facter/resolvers/windows/ffi/winnls_ffi'
34
+ require_relative '../../../facter/resolvers/windows/ffi/winnls_ffi'
35
35
  WinnlsFFI.GetACP.to_s
36
36
  end
37
37
  end
@@ -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 manufacturer =~ /^Xen/
45
+ elsif /^Xen/.match?(manufacturer)
46
46
  'xen'
47
- elsif manufacturer =~ /^Amazon EC2/
47
+ elsif /^Amazon EC2/.match?(manufacturer)
48
48
  'kvm'
49
49
  else
50
50
  'physical'
@@ -45,7 +45,7 @@ module Facter
45
45
  return if output.empty?
46
46
 
47
47
  output.each_line do |line|
48
- next if line =~ /Domain-0|Name/
48
+ next if /Domain-0|Name/.match?(line)
49
49
 
50
50
  domain = line.match(/^([^\s]*)\s/)
51
51
  domain = domain&.captures&.first
@@ -13,7 +13,7 @@ module Facter
13
13
  description = input[:description]
14
14
  kernel_version = input[:kernel_version]
15
15
 
16
- if version =~ /10.0/
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 version =~ /5.2/
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 content =~ /interface.*#{interface_name}/
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
@@ -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| query =~ /^[0-9]+$/ ? query.to_i : 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)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Facter
4
- VERSION = '4.3.1' unless defined?(VERSION)
4
+ VERSION = '4.4.0' unless defined?(VERSION)
5
5
  end
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
- require 'facter/version'
7
- require 'facter/framework/core/file_loader'
8
- require 'facter/framework/core/options/options_validator'
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
- require 'facter/framework/cli/cli_launcher'
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
- Hash[collection]
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.3.1
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-04 00:00:00.000000000 Z
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: '12.3'
19
+ version: '13.0'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 12.3.3
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: '12.3'
29
+ version: '13.0'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 12.3.3
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.1.6
1088
+ rubygems_version: 3.4.12
1089
1089
  signing_key:
1090
1090
  specification_version: 4
1091
1091
  summary: Facter, a system inventory tool