facter 4.2.1 → 4.2.5

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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +202 -0
  3. data/lib/facter/custom_facts/core/execution/base.rb +14 -9
  4. data/lib/facter/custom_facts/core/execution.rb +25 -17
  5. data/lib/facter/custom_facts/core/file_loader.rb +0 -1
  6. data/lib/facter/custom_facts/core/legacy_facter.rb +0 -2
  7. data/lib/facter/custom_facts/core/resolvable.rb +1 -1
  8. data/lib/facter/custom_facts/util/collection.rb +6 -4
  9. data/lib/facter/custom_facts/util/confine.rb +9 -3
  10. data/lib/facter/custom_facts/util/directory_loader.rb +18 -6
  11. data/lib/facter/custom_facts/util/fact.rb +12 -10
  12. data/lib/facter/custom_facts/util/loader.rb +7 -3
  13. data/lib/facter/custom_facts/util/parser.rb +8 -2
  14. data/lib/facter/custom_facts/util/resolution.rb +5 -1
  15. data/lib/facter/facts/windows/os/windows/display_version.rb +19 -0
  16. data/lib/facter/framework/cli/cli.rb +4 -0
  17. data/lib/facter/framework/core/fact/internal/internal_fact_manager.rb +0 -2
  18. data/lib/facter/framework/core/fact_loaders/fact_loader.rb +0 -1
  19. data/lib/facter/framework/core/fact_manager.rb +14 -1
  20. data/lib/facter/framework/core/options/option_store.rb +3 -1
  21. data/lib/facter/framework/logging/logger.rb +61 -0
  22. data/lib/facter/framework/parsers/query_parser.rb +1 -4
  23. data/lib/facter/models/resolved_fact.rb +4 -0
  24. data/lib/facter/resolvers/aix/disks.rb +1 -1
  25. data/lib/facter/resolvers/aix/mountpoints.rb +1 -1
  26. data/lib/facter/resolvers/aix/partitions.rb +1 -1
  27. data/lib/facter/resolvers/aix/processors.rb +2 -1
  28. data/lib/facter/resolvers/linux/networking.rb +0 -1
  29. data/lib/facter/resolvers/lsb_release.rb +1 -2
  30. data/lib/facter/resolvers/macosx/{processor.rb → processors.rb} +21 -21
  31. data/lib/facter/resolvers/networking.rb +3 -1
  32. data/lib/facter/resolvers/os_release.rb +7 -4
  33. data/lib/facter/resolvers/partitions.rb +1 -3
  34. data/lib/facter/resolvers/windows/product_release.rb +13 -4
  35. data/lib/facter/util/aix/info_extractor.rb +60 -9
  36. data/lib/facter/util/facts/windows_release_finder.rb +4 -2
  37. data/lib/facter/util/linux/dhcp.rb +4 -1
  38. data/lib/facter/util/linux/socket_parser.rb +17 -2
  39. data/lib/facter/util/resolvers/http.rb +3 -0
  40. data/lib/facter/version.rb +1 -1
  41. data/lib/facter.rb +31 -18
  42. metadata +12 -5
  43. data/lib/facter/custom_facts/core/logging.rb +0 -203
data/lib/facter.rb CHANGED
@@ -13,8 +13,6 @@ module Facter
13
13
  Options.init
14
14
  Log.output(STDOUT)
15
15
  @already_searched = {}
16
- @debug_once = []
17
- @warn_once = []
18
16
 
19
17
  class << self
20
18
  # Method used by puppet-agent to retrieve facts
@@ -109,8 +107,7 @@ module Facter
109
107
  # @api public
110
108
  def clear
111
109
  @already_searched = {}
112
- @debug_once = []
113
- @warn_once = []
110
+ Facter.clear_messages
114
111
  LegacyFacter.clear
115
112
  Options[:custom_dir] = []
116
113
  LegacyFacter.collection.invalidate_custom_facts
@@ -119,6 +116,13 @@ module Facter
119
116
  nil
120
117
  end
121
118
 
119
+ # Clears the seen state of debug and warning messages.
120
+ #
121
+ # @return [nil]
122
+ def clear_messages
123
+ Facter::Log.clear_messages
124
+ end
125
+
122
126
  # Retrieves the value of a core fact. External or custom facts are
123
127
  # not returned with this call. Returns `nil` if no such fact exists.
124
128
  #
@@ -153,13 +157,7 @@ module Facter
153
157
  #
154
158
  # @api public
155
159
  def debugonce(message)
156
- return unless debugging?
157
-
158
- message_string = message.to_s
159
- return if @debug_once.include? message_string
160
-
161
- @debug_once << message_string
162
- logger.debug(message_string)
160
+ logger.debugonce(message)
163
161
  nil
164
162
  end
165
163
 
@@ -207,6 +205,25 @@ module Facter
207
205
  Facter::Options[:debug] = debug_bool
208
206
  end
209
207
 
208
+ # Check whether http debugging is enabled
209
+ #
210
+ # @return [bool]
211
+ #
212
+ # @api public
213
+ def http_debug?
214
+ Options[:http_debug]
215
+ end
216
+
217
+ # Enable or disable http debugging
218
+ # @param debug_bool [bool] State which http debugging should have
219
+ #
220
+ # @return [type] [description]
221
+ #
222
+ # @api public
223
+ def http_debug(http_debug_bool)
224
+ Facter::Options[:http_debug] = http_debug_bool
225
+ end
226
+
210
227
  # Enable sequential resolving of facts
211
228
  #
212
229
  # @return [bool]
@@ -392,7 +409,7 @@ module Facter
392
409
  #
393
410
  # @api public
394
411
  def value(user_query)
395
- user_query = user_query.to_s
412
+ user_query = user_query.to_s.downcase
396
413
  resolve_fact(user_query)
397
414
 
398
415
  @already_searched[user_query]&.value
@@ -409,7 +426,7 @@ module Facter
409
426
  #
410
427
  # @api public
411
428
  def fact(user_query)
412
- user_query = user_query.to_s
429
+ user_query = user_query.to_s.downcase
413
430
  resolve_fact(user_query)
414
431
 
415
432
  @already_searched[user_query]
@@ -482,11 +499,7 @@ module Facter
482
499
  #
483
500
  # @api public
484
501
  def warnonce(message)
485
- message_string = message.to_s
486
- return if @warn_once.include? message_string
487
-
488
- @warn_once << message_string
489
- logger.warn(message_string)
502
+ logger.warnonce(message)
490
503
  nil
491
504
  end
492
505
 
metadata CHANGED
@@ -1,19 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facter
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.1
4
+ version: 4.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-09 00:00:00.000000000 Z
11
+ date: 2021-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '12.3'
17
20
  - - ">="
18
21
  - !ruby/object:Gem::Version
19
22
  version: 12.3.3
@@ -21,6 +24,9 @@ dependencies:
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '12.3'
24
30
  - - ">="
25
31
  - !ruby/object:Gem::Version
26
32
  version: 12.3.3
@@ -192,6 +198,7 @@ executables:
192
198
  extensions: []
193
199
  extra_rdoc_files: []
194
200
  files:
201
+ - LICENSE
195
202
  - bin/facter
196
203
  - lib/docs/generate.rb
197
204
  - lib/docs/generate_cli.rb
@@ -207,7 +214,6 @@ files:
207
214
  - lib/facter/custom_facts/core/execution/windows.rb
208
215
  - lib/facter/custom_facts/core/file_loader.rb
209
216
  - lib/facter/custom_facts/core/legacy_facter.rb
210
- - lib/facter/custom_facts/core/logging.rb
211
217
  - lib/facter/custom_facts/core/resolvable.rb
212
218
  - lib/facter/custom_facts/core/suitable.rb
213
219
  - lib/facter/custom_facts/util/collection.rb
@@ -840,6 +846,7 @@ files:
840
846
  - lib/facter/facts/windows/os/hardware.rb
841
847
  - lib/facter/facts/windows/os/name.rb
842
848
  - lib/facter/facts/windows/os/release.rb
849
+ - lib/facter/facts/windows/os/windows/display_version.rb
843
850
  - lib/facter/facts/windows/os/windows/edition_id.rb
844
851
  - lib/facter/facts/windows/os/windows/installation_type.rb
845
852
  - lib/facter/facts/windows/os/windows/product_name.rb
@@ -958,7 +965,7 @@ files:
958
965
  - lib/facter/resolvers/macosx/filesystems.rb
959
966
  - lib/facter/resolvers/macosx/load_averages.rb
960
967
  - lib/facter/resolvers/macosx/mountpoints.rb
961
- - lib/facter/resolvers/macosx/processor.rb
968
+ - lib/facter/resolvers/macosx/processors.rb
962
969
  - lib/facter/resolvers/macosx/swap_memory.rb
963
970
  - lib/facter/resolvers/macosx/system_memory.rb
964
971
  - lib/facter/resolvers/macosx/system_profiler.rb
@@ -1065,7 +1072,7 @@ files:
1065
1072
  - lib/facter/version.rb
1066
1073
  homepage: https://github.com/puppetlabs/facter
1067
1074
  licenses:
1068
- - MIT
1075
+ - Apache-2.0
1069
1076
  metadata: {}
1070
1077
  post_install_message:
1071
1078
  rdoc_options: []
@@ -1,203 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module LegacyFacter
4
- module Core
5
- module Logging
6
- extend self
7
-
8
- # @api private
9
- GREEN = "\e[0;32m"
10
- # @api private
11
- RESET = "\e[0m"
12
-
13
- RED = "\e[31m"
14
-
15
- # @api private
16
- @@debug = false
17
- # @api private
18
- @@timing = false
19
- # @api private
20
- @@trace = false
21
-
22
- # @api private
23
- @@warn_messages = {}
24
- # @api private
25
- @@debug_messages = {}
26
-
27
- # @api private
28
- @@message_callback = nil
29
-
30
- # Used to register a callback that is called when a message is logged.
31
- # If a block is given, Facter will not log messages.
32
- # If a block is not given, Facter will resume logging messages.
33
- # @param block [Proc] the callback to call when a message is logged.
34
- # The first argument to the callback will be a symbol representing a level. The supported
35
- # levels are: :trace, :debug, :info, :warn, :error, and :fatal.
36
- # The second argument to the callback will be a string containing the message
37
- # that was logged.
38
- # @api public
39
- def on_message(&block)
40
- @@message_callback = block
41
- end
42
-
43
- # Prints a debug message if debugging is turned on
44
- #
45
- # @param msg [String] the debug message
46
- # @return [void]
47
- def debug(msg)
48
- return unless debugging?
49
-
50
- if msg.nil? || msg.empty?
51
- invoker = caller(1..1).first.slice(/.*:\d+/)
52
- self.warn "#{self.class}#debug invoked with invalid message #{msg.inspect}:#{msg.class} at #{invoker}"
53
- elsif @@message_callback
54
- @@message_callback.call(:debug, msg)
55
- else
56
- puts GREEN + msg + RESET
57
- end
58
- end
59
-
60
- # Prints a debug message only once.
61
- #
62
- # @note Uniqueness is based on the string, not the specific location
63
- # of the method call.
64
- #
65
- # @param msg [String] the debug message
66
- # @return [void]
67
- def debugonce(msg)
68
- return unless msg && !msg.empty? && @@debug_messages[msg].nil?
69
-
70
- @@debug_messages[msg] = true
71
- debug(msg)
72
- end
73
-
74
- # Prints a warning message. The message is only printed if debugging
75
- # is enabled.
76
- #
77
- # @param msg [String] the warning message to be printed
78
- #
79
- # @return [void]
80
- def warn(msg)
81
- if msg.nil? || msg.empty?
82
- invoker = caller(1..1).first.slice(/.*:\d+/)
83
- msg = "#{self.class}#debug invoked with invalid message #{msg.inspect}:#{msg.class} at #{invoker}"
84
- end
85
- if @@message_callback
86
- @@message_callback.call(:warn, msg)
87
- else
88
- Kernel.warn msg
89
- end
90
- end
91
-
92
- # Prints a warning message only once per process. Each unique string
93
- # is printed once.
94
- #
95
- # @note Unlike {warn} the message will be printed even if debugging is
96
- # not turned on. This behavior is likely to change and should not be
97
- # relied on.
98
- #
99
- # @param msg [String] the warning message to be printed
100
- #
101
- # @return [void]
102
- def warnonce(msg)
103
- return unless @@warn_messages[msg].nil?
104
-
105
- self.warn(msg)
106
- @@warn_messages[msg] = true
107
- end
108
-
109
- def log_exception(exception, message = :default)
110
- self.warn(format_exception(exception, message, @@trace))
111
- end
112
-
113
- def format_exception(exception, message, trace)
114
- arr = []
115
-
116
- if message == :default
117
- arr << exception.message
118
- elsif message
119
- arr << message
120
- end
121
-
122
- if trace
123
- arr << 'backtrace:'
124
- arr.concat(exception.backtrace)
125
- end
126
-
127
- "#{RED}#{arr.flatten.join("\n")}#{RESET}"
128
- end
129
-
130
- # Print an exception message, and optionally a backtrace if trace is set
131
-
132
- # Print timing information
133
- #
134
- # @param string [String] the time to print
135
- # @return [void]
136
- #
137
- # @api private
138
- def show_time(string)
139
- return unless string && timing?
140
-
141
- if @@message_callback
142
- @@message_callback.call(:info, string)
143
- else
144
- $stderr.puts "#{GREEN}#{string}#{RESET}"
145
- end
146
- end
147
-
148
- # Enable or disable logging of debug messages
149
- #
150
- # @param bool [true, false]
151
- # @return [void]
152
- #
153
- # @api private
154
- def debugging(bool)
155
- @@debug = bool
156
- end
157
-
158
- # Is debugging enabled?
159
- #
160
- # @return [true, false]
161
- #
162
- # @api private
163
- def debugging?
164
- @@debug
165
- end
166
-
167
- # Enable or disable logging of timing information
168
- #
169
- # @param bool [true, false]
170
- # @return [void]
171
- #
172
- # @api private
173
- def timing(bool)
174
- @@timing = bool
175
- end
176
-
177
- # Returns whether timing output is turned on
178
- #
179
- # @api private
180
- def timing?
181
- @@timing
182
- end
183
-
184
- def trace(bool)
185
- @@trace = bool
186
- end
187
-
188
- def trace?
189
- @@trace
190
- end
191
-
192
- # Clears the seen state of debug and warning messages. See {debugonce} and {warnonce}.
193
- #
194
- # @return [void]
195
- #
196
- # @api private
197
- def clear_messages
198
- @@debug_messages.clear
199
- @@warn_messages.clear
200
- end
201
- end
202
- end
203
- end