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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d3dd94ae85f9b9327eac3cbcc63794f202f4eea27d7b8c2c80b8a5b354aca94a
4
- data.tar.gz: a179d9b63edb75738a22d5ed2061c0b2b4313da80dad43af2ad9eb4b1e3bee27
3
+ metadata.gz: a329a8e0a2281e2640784c89bd374f16a2cb75dbbde5a19b5608340371d92601
4
+ data.tar.gz: 9374fd76feb4d7d583b566e6f5c6daffb613fff8c6adeca0fffd9201e6dd676c
5
5
  SHA512:
6
- metadata.gz: 33fd39d071e0033316518b51310290694d869c7b8f3b7d006c66f20629999cbcc549df6ed58b28d46c092664ba3a89c7f5813117bf5bff50c555202e79c99476
7
- data.tar.gz: c824262cd5cdcb601b203bc4675c832348dce77ca9867f008a23cb8f8677812ab858cc3f11012b80deec949515d6419876b5480d25587e2a7df52c9df1c15540
6
+ metadata.gz: 7c1ef71b91e17ba0441a4a56c10fcf1eaea3c09e99754e9a42035e3ddbf41de82268d49b9debef5096eed6673b499b6fd3368473c7cdeaddc0b8ab0a3d0ad4a0
7
+ data.tar.gz: 7c431855c6d26c5bda0f17f647d80c7c593c455ad8bad56aa0b9d5077bb4d59ea0f34a53b512cfe3569d13c46ff477e887e14c45e01d9e55044e0b3311257d81
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'facter/framework/cli/cli_launcher'
3
+ require_relative '../facter/framework/cli/cli_launcher'
4
4
 
5
5
  cli = Facter::Cli.new([])
6
6
 
@@ -106,6 +106,7 @@ module Facter
106
106
  raise Facter::Core::Execution::ExecutionFailure.new, message
107
107
  end
108
108
 
109
+ out.force_encoding(Encoding.default_external) unless out.valid_encoding?
109
110
  [out.strip, stderr]
110
111
  end
111
112
 
@@ -140,7 +141,7 @@ module Facter
140
141
 
141
142
  def builtin_command?(command)
142
143
  output, _status = Open3.capture2("type #{command}")
143
- output.chomp =~ /builtin/ ? true : false
144
+ /builtin/.match?(output.chomp) ? true : false
144
145
  end
145
146
  end
146
147
  end
@@ -44,7 +44,7 @@ module Facter
44
44
 
45
45
  return unless exe && (expanded = which(exe))
46
46
 
47
- expanded = "'#{expanded}'" if expanded =~ /\s/
47
+ expanded = "'#{expanded}'" if /\s/.match?(expanded)
48
48
  expanded << " #{args}" if args
49
49
 
50
50
  expanded
@@ -11,7 +11,7 @@ module Facter
11
11
  def which(bin)
12
12
  # `echo` is allowed for facter 3.x compatibility, otherwise
13
13
  # all commands much be found on the PATH or absolute.
14
- return bin if /^echo$/i =~ bin
14
+ return bin if /^echo$/i.match?(bin)
15
15
 
16
16
  if absolute_path?(bin)
17
17
  return bin if File.executable?(bin)
@@ -56,7 +56,7 @@ module Facter
56
56
 
57
57
  return unless exe && (expanded = which(exe))
58
58
 
59
- expanded = "\"#{expanded}\"" if expanded =~ /\s+/
59
+ expanded = "\"#{expanded}\"" if /\s+/.match?(expanded)
60
60
  expanded << " #{args}" if args
61
61
 
62
62
  expanded
@@ -1,28 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'facter/custom_facts/core/legacy_facter'
4
- require 'facter/custom_facts/util/fact'
5
- require 'facter/custom_facts/util/collection'
6
- require 'facter/custom_facts/util/fact'
7
- require 'facter/custom_facts/util/loader'
8
- require 'facter/custom_facts/core/execution/base'
9
- require 'facter/custom_facts/core/execution/windows'
10
- require 'facter/custom_facts/core/execution/posix'
11
- require 'facter/custom_facts/util/values'
12
- require 'facter/custom_facts/util/confine'
3
+ require_relative '../../../facter/custom_facts/util/fact'
4
+ require_relative '../../../facter/custom_facts/util/collection'
5
+ require_relative '../../../facter/custom_facts/util/fact'
6
+ require_relative '../../../facter/custom_facts/util/loader'
7
+ require_relative '../../../facter/custom_facts/core/execution/base'
8
+ require_relative '../../../facter/custom_facts/core/execution/windows'
9
+ require_relative '../../../facter/custom_facts/core/execution/posix'
10
+ require_relative '../../../facter/custom_facts/util/values'
11
+ require_relative '../../../facter/custom_facts/util/confine'
13
12
 
14
- require 'facter/custom_facts/util/config'
13
+ require_relative '../../../facter/custom_facts/util/config'
15
14
 
16
- require 'facter/custom_facts/util/normalization'
17
- require 'facter/custom_facts/core/execution'
18
- require 'facter/custom_facts/core/resolvable'
19
- require 'facter/custom_facts/core/suitable'
20
- require 'facter/custom_facts/util/resolution'
21
- require 'facter/custom_facts/core/directed_graph'
22
- require 'facter/custom_facts/core/resolvable'
23
- require 'facter/custom_facts/core/aggregate'
24
- require 'facter/custom_facts/util/composite_loader'
25
- require 'facter/custom_facts/util/parser'
26
- require 'facter/custom_facts/util/directory_loader'
27
- require 'facter/custom_facts/util/nothing_loader'
28
- require 'facter/custom_facts/util/nothing_loader'
15
+ require_relative '../../../facter/custom_facts/util/normalization'
16
+ require_relative '../../../facter/custom_facts/core/execution'
17
+ require_relative '../../../facter/custom_facts/core/resolvable'
18
+ require_relative '../../../facter/custom_facts/core/suitable'
19
+ require_relative '../../../facter/custom_facts/util/resolution'
20
+ require_relative '../../../facter/custom_facts/core/directed_graph'
21
+ require_relative '../../../facter/custom_facts/core/resolvable'
22
+ require_relative '../../../facter/custom_facts/core/aggregate'
23
+ require_relative '../../../facter/custom_facts/util/composite_loader'
24
+ require_relative '../../../facter/custom_facts/util/parser'
25
+ require_relative '../../../facter/custom_facts/util/directory_loader'
26
+ require_relative '../../../facter/custom_facts/util/nothing_loader'
27
+ require_relative '../../../facter/custom_facts/util/nothing_loader'
@@ -18,7 +18,7 @@
18
18
 
19
19
  require 'pathname'
20
20
 
21
- require 'facter/custom_facts/core/file_loader'
21
+ require_relative '../../../facter/custom_facts/core/file_loader'
22
22
 
23
23
  # Functions as a hash of 'facts' about your system system, such as MAC
24
24
  # address, IP address, architecture, etc.
@@ -38,11 +38,7 @@ module LegacyFacter
38
38
  #
39
39
  # Attempt to normalize and validate the given string.
40
40
  #
41
- # On Ruby 1.8 the string is checked by stripping out all non UTF-8
42
- # characters and comparing the converted string to the original. If they
43
- # do not match then the string is considered invalid.
44
- #
45
- # On Ruby 1.9+, the string is validate by checking that the string encoding
41
+ # The string is validated by checking that the string encoding
46
42
  # is UTF-8 and that the string content matches the encoding. If the string
47
43
  # is not an expected encoding then it is converted to UTF-8.
48
44
  #
@@ -51,27 +47,16 @@ module LegacyFacter
51
47
  # @param value [String]
52
48
  # @return [void]
53
49
 
54
- if RUBY_VERSION =~ /^1\.8/
55
- require 'iconv'
56
-
57
- def normalize_string(value)
58
- converted = Iconv.conv('UTF-8//IGNORE', 'UTF-8', value)
59
- raise NormalizationError, "String #{value.inspect} is not valid UTF-8" if converted != value
50
+ def normalize_string(value)
51
+ value = value.encode(Encoding::UTF_8)
60
52
 
61
- value
53
+ unless value.valid_encoding?
54
+ raise NormalizationError, "String #{value.inspect} doesn't match the reported encoding #{value.encoding}"
62
55
  end
63
- else
64
- def normalize_string(value)
65
- value = value.encode(Encoding::UTF_8)
66
56
 
67
- unless value.valid_encoding?
68
- raise NormalizationError, "String #{value.inspect} doesn't match the reported encoding #{value.encoding}"
69
- end
70
-
71
- value
72
- rescue EncodingError
73
- raise NormalizationError, "String encoding #{value.encoding} is not UTF-8 and could not be converted to UTF-8"
74
- end
57
+ value
58
+ rescue EncodingError
59
+ raise NormalizationError, "String encoding #{value.encoding} is not UTF-8 and could not be converted to UTF-8"
75
60
  end
76
61
 
77
62
  # Validate all elements of the array.
@@ -4,7 +4,7 @@ module LegacyFacter
4
4
  module Util
5
5
  module Root
6
6
  def self.root?
7
- require 'facter/resolvers/windows/ffi/identity_ffi'
7
+ require_relative '../../../facter/resolvers/windows/ffi/identity_ffi'
8
8
  IdentityFFI.privileged?
9
9
  end
10
10
  end
@@ -10,7 +10,7 @@ module Facts
10
10
  def call_the_resolver
11
11
  fact_value = Facter::Resolvers::Uname.resolve(:machine)
12
12
  fact_value = 'amd64' if fact_value == 'x86_64'
13
- fact_value = 'i386' if fact_value =~ /i[3456]86|pentium/
13
+ fact_value = 'i386' if /i[3456]86|pentium/.match?(fact_value)
14
14
 
15
15
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
16
16
  end
@@ -52,9 +52,9 @@ module Facts
52
52
 
53
53
  return { google: true } if manufacturer == 'Google'
54
54
 
55
- return { openstack: true } if manufacturer =~ /^OpenStack/
55
+ return { openstack: true } if /^OpenStack/.match?(manufacturer)
56
56
 
57
- return { amazon: true } if manufacturer =~ /^Amazon/
57
+ return { amazon: true } if /^Amazon/.match?(manufacturer)
58
58
 
59
59
  {}
60
60
  end
@@ -10,7 +10,7 @@ module Facts
10
10
  def call_the_resolver
11
11
  fact_value = Facter::Resolvers::Uname.resolve(:machine)
12
12
 
13
- fact_value = 'i386' if fact_value =~ /i[3456]86|pentium/
13
+ fact_value = 'i386' if /i[3456]86|pentium/.match?(fact_value)
14
14
 
15
15
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
16
16
  end
@@ -27,9 +27,9 @@ module Facts
27
27
 
28
28
  return { google: true } if manufacturer == 'Google'
29
29
 
30
- return { openstack: true } if Facter::Resolvers::DMIComputerSystem.resolve(:name) =~ /^OpenStack/
30
+ return { openstack: true } if /^OpenStack/.match?(Facter::Resolvers::DMIComputerSystem.resolve(:name))
31
31
 
32
- return { amazon: true } if manufacturer =~ /^Amazon/
32
+ return { amazon: true } if /^Amazon/.match?(manufacturer)
33
33
  end
34
34
  end
35
35
  end
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'facter/framework/logging/logger.rb'
4
+ require_relative '../../../facter/framework/logging/logger.rb'
5
5
  Facter::Log.output(STDERR)
6
- require 'facter'
7
- require 'facter/framework/cli/cli'
6
+ require_relative '../../../facter'
7
+ require_relative '../../../facter/framework/cli/cli'
8
8
 
9
9
  class CliLauncher
10
10
  class << self
@@ -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 FactGroups
@@ -64,7 +64,7 @@ module Facter
64
64
  def get_fact(fact_name)
65
65
  return @facts_ttls[fact_name] if @facts_ttls[fact_name]
66
66
 
67
- result = @facts_ttls.select { |name, fact| break fact if fact_name =~ /^#{name}\..*/ }
67
+ result = @facts_ttls.select { |name, fact| break fact if /^#{name}\..*/.match?(fact_name) }
68
68
  return nil if result == {}
69
69
 
70
70
  result
@@ -103,7 +103,7 @@ module Facter
103
103
 
104
104
  blocked_facts.each do |blocked|
105
105
  facts.each do |fact|
106
- next unless fact.name =~ /^#{blocked}\..*|^#{blocked}$/
106
+ next unless /^#{blocked}\..*|^#{blocked}$/.match?(fact.name)
107
107
 
108
108
  if fact.type == :core
109
109
  reject_list_core << fact