facter 4.1.1 → 4.2.3
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/LICENSE +202 -0
- data/lib/facter.rb +11 -17
- data/lib/facter/config.rb +2 -0
- data/lib/facter/custom_facts/core/execution/posix.rb +2 -2
- data/lib/facter/custom_facts/core/execution/windows.rb +1 -1
- data/lib/facter/custom_facts/core/file_loader.rb +0 -1
- data/lib/facter/custom_facts/core/legacy_facter.rb +0 -2
- data/lib/facter/custom_facts/core/resolvable.rb +1 -1
- data/lib/facter/custom_facts/util/collection.rb +6 -4
- data/lib/facter/custom_facts/util/confine.rb +9 -3
- data/lib/facter/custom_facts/util/directory_loader.rb +19 -7
- data/lib/facter/custom_facts/util/fact.rb +12 -10
- data/lib/facter/custom_facts/util/loader.rb +5 -1
- data/lib/facter/custom_facts/util/parser.rb +8 -2
- data/lib/facter/custom_facts/util/resolution.rb +5 -1
- data/lib/facter/custom_facts/util/windows_root.rb +2 -1
- data/lib/facter/facts/freebsd/is_virtual.rb +1 -5
- data/lib/facter/facts/freebsd/virtual.rb +1 -2
- data/lib/facter/facts/linux/az_metadata.rb +1 -5
- data/lib/facter/facts/linux/cloud/provider.rb +1 -5
- data/lib/facter/facts/linux/ec2_metadata.rb +1 -5
- data/lib/facter/facts/linux/ec2_userdata.rb +1 -5
- data/lib/facter/facts/linux/hypervisors/xen.rb +1 -2
- data/lib/facter/facts/linux/is_virtual.rb +1 -5
- data/lib/facter/facts/linux/virtual.rb +1 -2
- data/lib/facter/facts/macosx/os/macosx/version.rb +6 -3
- data/lib/facter/facts/windows/az_metadata.rb +1 -1
- data/lib/facter/facts/windows/cloud/provider.rb +1 -1
- data/lib/facter/facts/windows/ec2_metadata.rb +1 -1
- data/lib/facter/facts/windows/ec2_userdata.rb +1 -1
- data/lib/facter/facts/windows/gce.rb +1 -1
- data/lib/facter/facts/windows/hypervisors/hyperv.rb +1 -1
- data/lib/facter/facts/windows/hypervisors/kvm.rb +2 -1
- data/lib/facter/facts/windows/hypervisors/virtualbox.rb +2 -2
- data/lib/facter/facts/windows/hypervisors/vmware.rb +1 -1
- data/lib/facter/facts/windows/hypervisors/xen.rb +3 -1
- data/lib/facter/facts/windows/is_virtual.rb +15 -0
- data/lib/facter/facts/windows/virtual.rb +15 -0
- data/lib/facter/framework/cli/cli.rb +13 -15
- data/lib/facter/framework/core/cache_manager.rb +2 -2
- data/lib/facter/framework/core/fact/external/external_fact_manager.rb +0 -1
- data/lib/facter/framework/core/fact/internal/internal_fact_manager.rb +39 -39
- data/lib/facter/framework/core/fact_filter.rb +4 -14
- data/lib/facter/framework/core/fact_loaders/fact_loader.rb +0 -1
- data/lib/facter/framework/core/fact_manager.rb +11 -0
- data/lib/facter/framework/core/file_loader.rb +1 -1
- data/lib/facter/framework/logging/logger.rb +61 -0
- data/lib/facter/framework/parsers/query_parser.rb +6 -16
- data/lib/facter/models/fact_collection.rb +20 -3
- data/lib/facter/models/resolved_fact.rb +2 -3
- data/lib/facter/models/searched_fact.rb +2 -3
- data/lib/facter/resolvers/ec2.rb +8 -1
- data/lib/facter/resolvers/linux/networking.rb +18 -1
- data/lib/facter/resolvers/lsb_release.rb +1 -2
- data/lib/facter/resolvers/mountpoints.rb +16 -8
- data/lib/facter/resolvers/networking.rb +3 -1
- data/lib/facter/resolvers/os_release.rb +7 -4
- data/lib/facter/resolvers/partitions.rb +1 -3
- data/lib/facter/resolvers/ruby.rb +1 -1
- data/lib/facter/resolvers/windows/ffi/identity_ffi.rb +5 -0
- data/lib/facter/resolvers/windows/ffi/kernel_ffi.rb +1 -1
- data/lib/facter/resolvers/windows/identity.rb +1 -6
- data/lib/facter/resolvers/windows/virtualization.rb +46 -44
- data/lib/facter/resolvers/xen.rb +6 -1
- data/lib/facter/util/facts/posix/virtual_detector.rb +74 -0
- data/lib/facter/util/linux/dhcp.rb +4 -1
- data/lib/facter/util/linux/if_inet6.rb +73 -0
- data/lib/facter/util/linux/socket_parser.rb +17 -2
- data/lib/facter/version.rb +1 -1
- metadata +48 -11
- data/lib/facter/custom_facts/core/logging.rb +0 -203
- data/lib/facter/facts/windows/virtualization/is_virtual.rb +0 -17
- data/lib/facter/facts/windows/virtualization/virtual.rb +0 -17
- data/lib/facter/framework/core/fact_augmenter.rb +0 -54
- data/lib/facter/util/facts/virtual_detector.rb +0 -83
@@ -75,7 +75,10 @@ module Facter
|
|
75
75
|
def search_with_dhcpcd_command(interface_name)
|
76
76
|
@log.debug("Attempt to get DHCP for interface #{interface_name}, from dhcpcd command")
|
77
77
|
|
78
|
-
|
78
|
+
@dhcpcd_command ||= Facter::Core::Execution.which('dhcpcd')
|
79
|
+
return unless @dhcpcd_command
|
80
|
+
|
81
|
+
output = Facter::Core::Execution.execute("#{@dhcpcd_command} -U #{interface_name}", logger: @log)
|
79
82
|
dhcp = output.match(/dhcp_server_identifier='(.*)'/)
|
80
83
|
dhcp[1] if dhcp
|
81
84
|
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ipaddr'
|
4
|
+
|
5
|
+
module Facter
|
6
|
+
module Util
|
7
|
+
module Linux
|
8
|
+
class IfInet6
|
9
|
+
class << self
|
10
|
+
IFA_FLAGS = {
|
11
|
+
'temporary' => 0x01,
|
12
|
+
'noad' => 0x02,
|
13
|
+
'optimistic' => 0x04,
|
14
|
+
'dadfailed' => 0x08,
|
15
|
+
'homeaddress' => 0x10,
|
16
|
+
'deprecated' => 0x20,
|
17
|
+
'tentative' => 0x40,
|
18
|
+
'permanent' => 0x80
|
19
|
+
# /proc/net/if_inet6 only supports the old 8bit flags
|
20
|
+
# I have been unable to find a simple solution to accesses
|
21
|
+
# the full 32bit flags. netlink is all I can could find but
|
22
|
+
# that will likely be ugly
|
23
|
+
# 'managetempaddr' => 0x100,
|
24
|
+
# 'noprefixroute' => 0x200,
|
25
|
+
# 'mcautojoin' => 0x400,
|
26
|
+
# 'stableprivacy' => 0x800
|
27
|
+
}.freeze
|
28
|
+
|
29
|
+
def read_flags
|
30
|
+
return read_flags_from_proc if File.exist?('/proc/net/if_inet6')
|
31
|
+
|
32
|
+
{}
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def read_flags_from_proc
|
38
|
+
flags = init_flags
|
39
|
+
Facter::Util::FileHelper.safe_read('/proc/net/if_inet6', nil).each_line do |line|
|
40
|
+
iface = line.split
|
41
|
+
next unless iface.size == 6
|
42
|
+
|
43
|
+
ip = parse_ip(iface[0])
|
44
|
+
flags[iface[5]][ip] = parse_ifa_flags(iface[4])
|
45
|
+
end
|
46
|
+
flags
|
47
|
+
end
|
48
|
+
|
49
|
+
def init_flags
|
50
|
+
Hash.new { |h1, k1| h1[k1] = Hash.new { |h2, k2| h2[k2] = [] } }
|
51
|
+
end
|
52
|
+
|
53
|
+
def parse_ifa_flags(flag)
|
54
|
+
flag = flag.hex
|
55
|
+
flags = []
|
56
|
+
IFA_FLAGS.each_pair do |name, value|
|
57
|
+
next if (flag & value).zero?
|
58
|
+
|
59
|
+
flags << name
|
60
|
+
end
|
61
|
+
flags
|
62
|
+
end
|
63
|
+
|
64
|
+
def parse_ip(ip)
|
65
|
+
# The ip address in if_net6 is a long string wit no colons
|
66
|
+
ip = ip.scan(/(\h{4})/).join(':')
|
67
|
+
IPAddr.new(ip).to_s
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -59,8 +59,23 @@ module Facter
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def bond_master_of(interface_name)
|
62
|
-
content =
|
63
|
-
content
|
62
|
+
content = get_ip_link_show_data(interface_name)
|
63
|
+
content&.match(/master (\S*) /)&.captures&.first
|
64
|
+
end
|
65
|
+
|
66
|
+
def get_ip_link_show_data(interface_name)
|
67
|
+
@ip_link_show_data ||= read_ip_link_show_data
|
68
|
+
@ip_link_show_data[interface_name]
|
69
|
+
end
|
70
|
+
|
71
|
+
def read_ip_link_show_data
|
72
|
+
ip_link_show_data = {}
|
73
|
+
output = Facter::Core::Execution.execute('ip -o link show', logger: @log)
|
74
|
+
output.each_line do |line|
|
75
|
+
interface_name = line.split(':')[1]&.strip if line
|
76
|
+
ip_link_show_data[interface_name] = line if interface_name
|
77
|
+
end
|
78
|
+
ip_link_show_data
|
64
79
|
end
|
65
80
|
|
66
81
|
def mac_from(ifaddr)
|
data/lib/facter/version.rb
CHANGED
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.
|
4
|
+
version: 4.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-16 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
|
@@ -108,6 +114,34 @@ dependencies:
|
|
108
114
|
- - "~>"
|
109
115
|
- !ruby/object:Gem::Version
|
110
116
|
version: '1.3'
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: timecop
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0.9'
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0.9'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: webmock
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - "~>"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '3.12'
|
138
|
+
type: :development
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '3.12'
|
111
145
|
- !ruby/object:Gem::Dependency
|
112
146
|
name: yard
|
113
147
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,7 +190,7 @@ dependencies:
|
|
156
190
|
- - "<"
|
157
191
|
- !ruby/object:Gem::Version
|
158
192
|
version: '2.0'
|
159
|
-
description:
|
193
|
+
description: You can prove anything with facts!
|
160
194
|
email:
|
161
195
|
- team-nw@puppet.com
|
162
196
|
executables:
|
@@ -164,6 +198,7 @@ executables:
|
|
164
198
|
extensions: []
|
165
199
|
extra_rdoc_files: []
|
166
200
|
files:
|
201
|
+
- LICENSE
|
167
202
|
- bin/facter
|
168
203
|
- lib/docs/generate.rb
|
169
204
|
- lib/docs/generate_cli.rb
|
@@ -179,7 +214,6 @@ files:
|
|
179
214
|
- lib/facter/custom_facts/core/execution/windows.rb
|
180
215
|
- lib/facter/custom_facts/core/file_loader.rb
|
181
216
|
- lib/facter/custom_facts/core/legacy_facter.rb
|
182
|
-
- lib/facter/custom_facts/core/logging.rb
|
183
217
|
- lib/facter/custom_facts/core/resolvable.rb
|
184
218
|
- lib/facter/custom_facts/core/suitable.rb
|
185
219
|
- lib/facter/custom_facts/util/collection.rb
|
@@ -774,6 +808,7 @@ files:
|
|
774
808
|
- lib/facter/facts/windows/interfaces.rb
|
775
809
|
- lib/facter/facts/windows/ipaddress6_interfaces.rb
|
776
810
|
- lib/facter/facts/windows/ipaddress_interfaces.rb
|
811
|
+
- lib/facter/facts/windows/is_virtual.rb
|
777
812
|
- lib/facter/facts/windows/kernel.rb
|
778
813
|
- lib/facter/facts/windows/kernelmajversion.rb
|
779
814
|
- lib/facter/facts/windows/kernelrelease.rb
|
@@ -836,8 +871,7 @@ files:
|
|
836
871
|
- lib/facter/facts/windows/system_uptime/seconds.rb
|
837
872
|
- lib/facter/facts/windows/system_uptime/uptime.rb
|
838
873
|
- lib/facter/facts/windows/timezone.rb
|
839
|
-
- lib/facter/facts/windows/
|
840
|
-
- lib/facter/facts/windows/virtualization/virtual.rb
|
874
|
+
- lib/facter/facts/windows/virtual.rb
|
841
875
|
- lib/facter/framework/benchmarking/timer.rb
|
842
876
|
- lib/facter/framework/cli/cli.rb
|
843
877
|
- lib/facter/framework/cli/cli_launcher.rb
|
@@ -847,7 +881,6 @@ files:
|
|
847
881
|
- lib/facter/framework/core/fact/external/external_fact_manager.rb
|
848
882
|
- lib/facter/framework/core/fact/internal/core_fact.rb
|
849
883
|
- lib/facter/framework/core/fact/internal/internal_fact_manager.rb
|
850
|
-
- lib/facter/framework/core/fact_augmenter.rb
|
851
884
|
- lib/facter/framework/core/fact_filter.rb
|
852
885
|
- lib/facter/framework/core/fact_loaders/class_discoverer.rb
|
853
886
|
- lib/facter/framework/core/fact_loaders/external_fact_loader.rb
|
@@ -1011,12 +1044,13 @@ files:
|
|
1011
1044
|
- lib/facter/util/aix/odm_query.rb
|
1012
1045
|
- lib/facter/util/api_debugger.rb
|
1013
1046
|
- lib/facter/util/facts/facts_utils.rb
|
1047
|
+
- lib/facter/util/facts/posix/virtual_detector.rb
|
1014
1048
|
- lib/facter/util/facts/unit_converter.rb
|
1015
1049
|
- lib/facter/util/facts/uptime_parser.rb
|
1016
|
-
- lib/facter/util/facts/virtual_detector.rb
|
1017
1050
|
- lib/facter/util/facts/windows_release_finder.rb
|
1018
1051
|
- lib/facter/util/file_helper.rb
|
1019
1052
|
- lib/facter/util/linux/dhcp.rb
|
1053
|
+
- lib/facter/util/linux/if_inet6.rb
|
1020
1054
|
- lib/facter/util/linux/routing_table.rb
|
1021
1055
|
- lib/facter/util/linux/socket_parser.rb
|
1022
1056
|
- lib/facter/util/macosx/system_profile_executor.rb
|
@@ -1037,7 +1071,7 @@ files:
|
|
1037
1071
|
- lib/facter/version.rb
|
1038
1072
|
homepage: https://github.com/puppetlabs/facter
|
1039
1073
|
licenses:
|
1040
|
-
-
|
1074
|
+
- Apache-2.0
|
1041
1075
|
metadata: {}
|
1042
1076
|
post_install_message:
|
1043
1077
|
rdoc_options: []
|
@@ -1045,9 +1079,12 @@ require_paths:
|
|
1045
1079
|
- lib
|
1046
1080
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1047
1081
|
requirements:
|
1048
|
-
- - "
|
1082
|
+
- - ">="
|
1049
1083
|
- !ruby/object:Gem::Version
|
1050
1084
|
version: '2.3'
|
1085
|
+
- - "<"
|
1086
|
+
- !ruby/object:Gem::Version
|
1087
|
+
version: '4.0'
|
1051
1088
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1052
1089
|
requirements:
|
1053
1090
|
- - ">="
|
@@ -1057,5 +1094,5 @@ requirements: []
|
|
1057
1094
|
rubygems_version: 3.0.8
|
1058
1095
|
signing_key:
|
1059
1096
|
specification_version: 4
|
1060
|
-
summary:
|
1097
|
+
summary: Facter, a system inventory tool
|
1061
1098
|
test_files: []
|
@@ -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
|