facter 4.3.1 → 4.4.0

Sign up to get free protection for your applications and to get access to all the features.
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