ohai 18.2.7 → 19.1.16

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d4124cfc978827ab3b466501f06996a182e94c217c9e5bbb0edf77103cb8f1c
4
- data.tar.gz: 3ae478f5e047780d6d9dff9859e84a94bd776ef6e0de2b190b1b647ef1d7421b
3
+ metadata.gz: 6339d53754721217929ead82d4a232ace638f648d5e7ba2469221dfd22da54a0
4
+ data.tar.gz: 28eda66502f23a2bacf4c96407fb89193023fe76cd5f30f0ab839096def6e044
5
5
  SHA512:
6
- metadata.gz: cb4420bce8dd0ce5226b75fcedc44ecd8341e8a2597e57e755c3b472879eb9428cf5eca8aca09c57f7f5f57d7ff26bbc195fb816433612a41c118afd5ee97db2
7
- data.tar.gz: 33b15548b40a5f556aa76db1da0b40ad89ee9e9d122dccbc6b1f133a9ce1c2d2ddd758a00345d50ff4e1a8e08221c13c58dbee20e868cd2ef3f2293ea4dd8c10
6
+ metadata.gz: c33166e19c09e55f3b28d9ee437a350666b7241b949e0b45bc1e4cc27118bc86130f2c6520c7a136de879d3e72fde0254cadbe3d562646abc7298cbb8b437731
7
+ data.tar.gz: ffd0515bda588dee888dcd1deed4a8d1275b35ddbb55d7b8913b5e87203781628820f0417df55847da3e27a2cec85b2df2e7a2cb7dcb632b9f1181d2f0575e03
data/Gemfile CHANGED
@@ -1,12 +1,14 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  source "https://rubygems.org"
3
4
 
4
5
  gemspec
5
6
 
6
- # pull these gems from main of chef/chef so that we're testing against what we will release
7
- gem "chef-config", git: "https://github.com/chef/chef", branch: "chef-18", glob: "chef-config/chef-config.gemspec"
8
- gem "chef-utils", git: "https://github.com/chef/chef", branch: "chef-18", glob: "chef-utils/chef-utils.gemspec"
9
-
7
+ # pull these gems from main of chef/chef so that we"re testing against what we will release
8
+ gem "appbundler"
9
+ gem "chef-config", git: "https://github.com/chef/chef", branch: "main", glob: "chef-config/chef-config.gemspec"
10
+ gem "chef-utils", git: "https://github.com/chef/chef", branch: "main", glob: "chef-utils/chef-utils.gemspec"
11
+ gem "ffi", "~> 1.17", force_ruby_platform: true
10
12
  # NOTE: do not submit PRs to add pry as a dep, add to your Gemfile.local
11
13
  group :development do
12
14
  gem "cookstyle", ">= 7.32.8"
@@ -16,8 +18,6 @@ group :development do
16
18
  gem "rspec-core", "~> 3.0"
17
19
  gem "rspec-expectations", "~> 3.0"
18
20
  gem "rspec-mocks", "~> 3.0"
19
- gem "rubocop-performance", "1.18.0"
20
- gem "rubocop-rspec"
21
21
  end
22
22
 
23
23
  group :debug do
data/lib/ohai/loader.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Author:: Claire McQuin (<claire@chef.io>)
3
4
  # Copyright:: Copyright (c) Chef Software Inc.
@@ -97,10 +98,10 @@ module Ohai
97
98
  # @return [Object] class object for the ohai plugin defined in the file
98
99
  def load_plugin_class(plugin_path)
99
100
  # Read the contents of the plugin to understand if it's a V6 or V7 plugin.
100
- contents = ""
101
+ contents = nil
101
102
  begin
102
103
  logger.trace("Loading plugin at #{plugin_path}")
103
- contents << File.read(plugin_path)
104
+ contents = File.read(plugin_path)
104
105
  rescue IOError, Errno::ENOENT
105
106
  logger.warn("Unable to open or read plugin at #{plugin_path}")
106
107
  return nil
@@ -28,6 +28,39 @@ module Ohai
28
28
  OCI_METADATA_URL = "/opc/v2"
29
29
  CHASSIS_ASSET_TAG_FILE = "/sys/devices/virtual/dmi/id/chassis_asset_tag"
30
30
 
31
+ # Get the chassis asset tag from DMI information
32
+ # On Linux: reads from sysfs
33
+ # On Windows: queries WMI Win32_SystemEnclosure
34
+ def chassis_asset_tag
35
+ if RUBY_PLATFORM =~ /mswin|mingw|windows/
36
+ get_chassis_asset_tag_windows
37
+ else
38
+ get_chassis_asset_tag_linux
39
+ end
40
+ end
41
+
42
+ # Read chassis asset tag from Linux sysfs
43
+ def get_chassis_asset_tag_linux
44
+ return unless ::File.exist?(CHASSIS_ASSET_TAG_FILE)
45
+
46
+ ::File.read(CHASSIS_ASSET_TAG_FILE).strip
47
+ rescue => e
48
+ logger.debug("Mixin OciMetadata: Failed to read chassis asset tag from #{CHASSIS_ASSET_TAG_FILE}: #{e}")
49
+ nil
50
+ end
51
+
52
+ # Read chassis asset tag from Windows WMI
53
+ def get_chassis_asset_tag_windows
54
+ require "wmi-lite/wmi" unless defined?(WmiLite::Wmi)
55
+
56
+ wmi = WmiLite::Wmi.new
57
+ enclosure = wmi.first_of("Win32_SystemEnclosure")
58
+ enclosure&.[]("SMBIOSAssetTag")
59
+ rescue => e
60
+ logger.debug("Mixin OciMetadata: Failed to read chassis asset tag from WMI: #{e}")
61
+ nil
62
+ end
63
+
31
64
  # fetch the meta content with a timeout and the required header
32
65
  def http_get(uri)
33
66
  conn = Net::HTTP.start(OCI_METADATA_ADDR)
@@ -51,7 +84,7 @@ module Ohai
51
84
  end
52
85
  json_data
53
86
  else
54
- logger.warn("Mixin OciMetadata: Received response code #{response.code} requesting metadata")
87
+ logger.debug("Mixin OciMetadata: Received response code #{response.code} requesting #{metadata}")
55
88
  nil
56
89
  end
57
90
  end
@@ -54,7 +54,7 @@ Ohai.plugin(:Alibaba) do
54
54
  # a single check that combines all the various detection methods for Alibaba
55
55
  # @return [Boolean] Does the system appear to be on Alibaba
56
56
  def looks_like_alibaba?
57
- true if hint?("alibaba") || has_ali_dmi?
57
+ hint?("alibaba") || has_ali_dmi?
58
58
  end
59
59
 
60
60
  collect_data do
@@ -108,7 +108,11 @@ Ohai.plugin(:EC2) do
108
108
  end
109
109
 
110
110
  collect_data do
111
- require "base64" unless defined?(Base64)
111
+ begin
112
+ require "base64" unless defined?(Base64)
113
+ rescue LoadError
114
+ logger.warn("Plugin EC2: base64 gem not found. Binary userdata will not be properly encoded.")
115
+ end
112
116
 
113
117
  if looks_like_ec2?
114
118
  logger.trace("Plugin EC2: looks_like_ec2? == true")
@@ -29,7 +29,7 @@ Ohai.plugin(:Eucalyptus) do
29
29
  provides "eucalyptus"
30
30
  depends "network/interfaces"
31
31
 
32
- MAC_MATCH = /^[dD]0:0[dD]:/.freeze unless defined?(MAC_MATCH)
32
+ MAC_MATCH = /^[dD]0:0[dD]:/ unless defined?(MAC_MATCH)
33
33
 
34
34
  # returns the mac address from the collection of all address types
35
35
  def get_mac_address(addresses)
@@ -744,10 +744,6 @@ Ohai.plugin(:Filesystem) do
744
744
  fs_data["by_mountpoint"] = by_mountpoint
745
745
  fs_data["by_pair"] = by_pair
746
746
 
747
- # Chef 16 added 'filesystem2'
748
- # In Chef 17 we made 'filesystem' and 'filesystem2' match (both new-style)
749
- # In Chef 18 we will drop 'filesystem2'
750
747
  filesystem fs_data
751
- filesystem2 fs_data
752
748
  end
753
749
  end
@@ -43,7 +43,7 @@ Ohai.plugin(:Network) do
43
43
  so = shell_out("#{Ohai.abs_path( "/sbin/ifconfig" )} -a")
44
44
  cint = nil
45
45
  so.stdout.lines do |line|
46
- if line =~ /^([0-9a-zA-Z\.]+):\s+/
46
+ if line =~ /^([0-9a-zA-Z\._]+):\s+/
47
47
  cint = $1
48
48
  iface[cint] = Mash.new
49
49
  if cint =~ /^(\w+)(\d+.*)/
@@ -80,10 +80,13 @@ Ohai.plugin(:Network) do
80
80
  flags = $1.split(",")
81
81
  iface[cint][:flags] = flags if flags.length > 0
82
82
  end
83
- if line =~ /metric: (\d+) mtu: (\d+)/
83
+ if line =~ /metric (\d+) mtu (\d+)/
84
84
  iface[cint][:metric] = $1
85
85
  iface[cint][:mtu] = $2
86
86
  end
87
+ if line =~ /media: (\w+)/
88
+ iface[cint][:encapsulation] = $1
89
+ end
87
90
  end
88
91
 
89
92
  so = shell_out("arp -an")
@@ -104,22 +107,44 @@ Ohai.plugin(:Network) do
104
107
  # which have been auto-configured (interfaces statically configured
105
108
  # into a system, but not located at boot time are not shown).
106
109
  so = shell_out("netstat -ibdn")
107
- so.stdout.lines do |line|
110
+ head = so.stdout.lines[0]
111
+ have_drop = false
112
+ if head =~ /Idrop/
113
+ have_drop = true
114
+ # Name Mtu Network Address Ipkts Ierrs Idrop Ibytes Opkts Oerrs Obytes Coll Drop
115
+ # vtnet0 1500 <Link#1> fa:16:3e:ba:3e:25 579 0 0 46746 210 0 26242 0 0
116
+ # $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11
117
+ regex = /^([\w\.\*]+)\s+\d+\s+<Link#\d+>\s+([\w\d:]*)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/
118
+ else
108
119
  # Name Mtu Network Address Ipkts Ierrs Ibytes Opkts Oerrs Obytes Coll Drop
109
120
  # ed0 1500 <Link#1> 54:52:00:68:92:85 333604 26 151905886 175472 0 24897542 0 905
110
121
  # $1 $2 $3 $4 $5 $6 $7 $8 $9 $10
111
- if line =~ /^([\w\.\*]+)\s+\d+\s+<Link#\d+>\s+([\w:]*)\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/
122
+ regex = /^([\w\.\*]+)\s+\d+\s+<Link#\d+>\s+([\w\d:]*)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/
123
+ end
124
+ so.stdout.lines do |line|
125
+ if line =~ regex
112
126
  net_counters[$1] ||= Mash.new
113
127
  net_counters[$1]["rx"] ||= Mash.new
114
128
  net_counters[$1]["tx"] ||= Mash.new
115
129
  net_counters[$1]["rx"]["packets"] = $3
116
130
  net_counters[$1]["rx"]["errors"] = $4
117
- net_counters[$1]["rx"]["bytes"] = $5
118
- net_counters[$1]["tx"]["packets"] = $6
119
- net_counters[$1]["tx"]["errors"] = $7
120
- net_counters[$1]["tx"]["bytes"] = $8
121
- net_counters[$1]["tx"]["collisions"] = $9
122
- net_counters[$1]["tx"]["dropped"] = $10
131
+ if have_drop
132
+ net_counters[$1]["rx"]["dropped"] = $5
133
+ net_counters[$1]["rx"]["bytes"] = $6
134
+ net_counters[$1]["tx"]["packets"] = $7
135
+ net_counters[$1]["tx"]["errors"] = $8
136
+ net_counters[$1]["tx"]["bytes"] = $9
137
+ net_counters[$1]["tx"]["collisions"] = $10
138
+ net_counters[$1]["tx"]["dropped"] = $11
139
+ else
140
+ net_counters[$1]["rx"]["bytes"] = $5
141
+ net_counters[$1]["tx"]["packets"] = $6
142
+ net_counters[$1]["tx"]["errors"] = $7
143
+ net_counters[$1]["tx"]["bytes"] = $8
144
+ net_counters[$1]["tx"]["collisions"] = $9
145
+ net_counters[$1]["tx"]["dropped"] = $10
146
+ end
147
+
123
148
  end
124
149
  end
125
150
 
@@ -72,7 +72,7 @@ Ohai.plugin(:GCE) do
72
72
  return true if hint?("gce")
73
73
 
74
74
  if has_gce_dmi? || has_gce_system_info?
75
- true if can_socket_connect?(Ohai::Mixin::GCEMetadata::GCE_METADATA_ADDR, 80)
75
+ can_socket_connect?(Ohai::Mixin::GCEMetadata::GCE_METADATA_ADDR, 80)
76
76
  end
77
77
  end
78
78
 
@@ -578,6 +578,8 @@ Ohai.plugin(:Network) do
578
578
 
579
579
  # returns the macaddress for interface from a hash of interfaces (iface elsewhere in this file)
580
580
  def get_mac_for_interface(interfaces, interface)
581
+ return "00:00:00:00:00:00" if interfaces[interface][:flags].include?("LOOPBACK")
582
+
581
583
  interfaces[interface][:addresses].find { |k, v| v["family"] == "lladdr" }.first unless interfaces[interface][:addresses].nil? || interfaces[interface][:flags].include?("NOARP")
582
584
  end
583
585
 
@@ -700,7 +702,7 @@ Ohai.plugin(:Network) do
700
702
  # Match the lead line for an interface from iproute2
701
703
  # 3: eth0.11@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
702
704
  # The '@eth0:' portion doesn't exist on primary interfaces and thus is optional in the regex
703
- IPROUTE_INT_REGEX ||= /^(\d+): ([0-9a-zA-Z@:\.\-_]*?)(@[0-9a-zA-Z\-_]+|):\s/.freeze
705
+ IPROUTE_INT_REGEX ||= /^(\d+): ([0-9a-zA-Z@:;\.\-_]*?)(@[0-9a-zA-Z\-_]+|):\s/
704
706
 
705
707
  if which("ip")
706
708
  # families to get default routes from
@@ -44,24 +44,22 @@ Ohai.plugin(:Oci) do
44
44
  end
45
45
 
46
46
  def oci_chassis_asset_tag?
47
- has_oci_chassis_asset_tag = false
48
- if file_exist?(Ohai::Mixin::OCIMetadata::CHASSIS_ASSET_TAG_FILE)
49
- file_open(Ohai::Mixin::OCIMetadata::CHASSIS_ASSET_TAG_FILE).each do |line|
50
- next unless /OracleCloud.com/.match?(line)
51
-
52
- logger.trace("Plugin oci: Found OracleCloud.com chassis_asset_tag used by oci.")
53
- has_oci_chassis_asset_tag = true
54
- break
55
- end
47
+ asset_tag = chassis_asset_tag
48
+ return false if asset_tag.nil? || asset_tag.empty?
49
+
50
+ if /OracleCloud.com/.match?(asset_tag)
51
+ logger.trace("Plugin oci: Found OracleCloud.com chassis_asset_tag used by oci.")
52
+ true
53
+ else
54
+ false
56
55
  end
57
- has_oci_chassis_asset_tag
58
56
  end
59
57
 
60
58
  def parse_metadata
61
- return nil unless can_socket_connect?(Ohai::Mixin::OCIMetadata::OCI_METADATA_ADDR, 80)
59
+ return unless can_socket_connect?(Ohai::Mixin::OCIMetadata::OCI_METADATA_ADDR, 80)
62
60
 
63
61
  instance_data = fetch_metadata("instance")
64
- return nil if instance_data.nil?
62
+ return if instance_data.nil?
65
63
 
66
64
  metadata = Mash.new
67
65
  metadata["compute"] = Mash.new
@@ -80,12 +78,14 @@ Ohai.plugin(:Oci) do
80
78
  end
81
79
  end
82
80
 
83
- volume_attachments_data = fetch_metadata("volumeAttachments")
81
+ volume_attachments_data = fetch_metadata("allVolumeAttachments")
84
82
 
85
83
  unless volume_attachments_data.nil?
86
84
  metadata["volumes"] = Mash.new
87
- volume_attachments_data.each do |k, v|
88
- metadata["volumes"][k] = v
85
+ volume_attachments_data.each do |v|
86
+ if v.is_a?(Hash) && v["id"]
87
+ metadata["volumes"][v["id"]] = v
88
+ end
89
89
  end
90
90
  end
91
91
 
@@ -22,7 +22,7 @@ Ohai.plugin(:Rpm) do
22
22
  provides "rpm"
23
23
  optional "true"
24
24
 
25
- MACROS_MARKER = /========================/.freeze unless defined?(MACROS_MARKER)
25
+ MACROS_MARKER = /========================/ unless defined?(MACROS_MARKER)
26
26
 
27
27
  unless defined?(DO_NOT_SPLIT)
28
28
  DO_NOT_SPLIT = %w{
@@ -37,7 +37,7 @@ Ohai.plugin(:DMI) do
37
37
  #
38
38
  # This cannot handle some property names, eg SMBIOSBIOSVersion.
39
39
  # https://rubular.com/r/FBNtXod4wkZGAG
40
- SPLIT_REGEX ||= /[A-Z][a-z0-9]+|[A-Z]{2,}(?=[A-Z][a-z0-9])|[A-Z]{2,}/.freeze
40
+ SPLIT_REGEX ||= /[A-Z][a-z0-9]+|[A-Z]{2,}(?=[A-Z][a-z0-9])|[A-Z]{2,}/
41
41
 
42
42
  WINDOWS_TO_UNIX_KEYS ||= [
43
43
  %w{vendor manufacturer},
@@ -41,7 +41,7 @@ Ohai.plugin(:Network) do
41
41
  # If we are running on windows nano or another operating system from the future
42
42
  # that does not populate the deprecated win32_* WMI classes, then we should
43
43
  # grab data from the newer MSFT_* classes
44
- return msft_adapter_data if data[:addresses].count == 0
44
+ return msft_adapter_data if data[:addresses].none?
45
45
 
46
46
  data[:adapters] = wmi.instances_of("Win32_NetworkAdapter")
47
47
  data
data/lib/ohai/version.rb CHANGED
@@ -19,5 +19,5 @@
19
19
 
20
20
  module Ohai
21
21
  OHAI_ROOT = File.expand_path(__dir__)
22
- VERSION = "18.2.7"
22
+ VERSION = "19.1.16"
23
23
  end
data/ohai.gemspec CHANGED
@@ -12,17 +12,18 @@ Gem::Specification.new do |s|
12
12
  s.email = "adam@chef.io"
13
13
  s.homepage = "https://github.com/chef/ohai/"
14
14
 
15
- s.required_ruby_version = ">= 2.7"
15
+ s.required_ruby_version = ">= 3.1"
16
16
 
17
- s.add_dependency "chef-config", ">= 14.12", "< 19"
18
- s.add_dependency "chef-utils", ">= 16.0", "< 19"
19
- s.add_dependency "ffi", "~> 1.9", "<= 1.17.0"
17
+ s.add_dependency "base64" # For encoding binary data in Ruby 3.4+
18
+ s.add_dependency "chef-config", ">= 14.12", "< 20"
19
+ s.add_dependency "chef-utils", ">= 16.0", "< 20"
20
+ s.add_dependency "ffi", ">= 1.15.5"
20
21
  s.add_dependency "ffi-yajl", "~> 2.2"
21
22
  s.add_dependency "ipaddress"
22
23
  s.add_dependency "mixlib-cli", ">= 1.7.0" # 1.7+ needed to support passing multiple options
23
24
  s.add_dependency "mixlib-config", ">= 2.0", "< 4.0"
24
25
  s.add_dependency "mixlib-log", ">= 2.0.1", "< 4.0"
25
- s.add_dependency "mixlib-shellout", "~> 3.2", ">= 3.2.5"
26
+ s.add_dependency "mixlib-shellout", "~> 3.3.6"
26
27
  s.add_dependency "plist", "~> 3.1"
27
28
  s.add_dependency "train-core"
28
29
  s.add_dependency "wmi-lite", "~> 1.0"
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ohai
3
3
  version: !ruby/object:Gem::Version
4
- version: 18.2.7
4
+ version: 19.1.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Jacob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-07-29 00:00:00.000000000 Z
11
+ date: 2025-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: base64
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: chef-config
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -19,7 +33,7 @@ dependencies:
19
33
  version: '14.12'
20
34
  - - "<"
21
35
  - !ruby/object:Gem::Version
22
- version: '19'
36
+ version: '20'
23
37
  type: :runtime
24
38
  prerelease: false
25
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +43,7 @@ dependencies:
29
43
  version: '14.12'
30
44
  - - "<"
31
45
  - !ruby/object:Gem::Version
32
- version: '19'
46
+ version: '20'
33
47
  - !ruby/object:Gem::Dependency
34
48
  name: chef-utils
35
49
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +53,7 @@ dependencies:
39
53
  version: '16.0'
40
54
  - - "<"
41
55
  - !ruby/object:Gem::Version
42
- version: '19'
56
+ version: '20'
43
57
  type: :runtime
44
58
  prerelease: false
45
59
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,27 +63,21 @@ dependencies:
49
63
  version: '16.0'
50
64
  - - "<"
51
65
  - !ruby/object:Gem::Version
52
- version: '19'
66
+ version: '20'
53
67
  - !ruby/object:Gem::Dependency
54
68
  name: ffi
55
69
  requirement: !ruby/object:Gem::Requirement
56
70
  requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '1.9'
60
- - - "<="
71
+ - - ">="
61
72
  - !ruby/object:Gem::Version
62
- version: 1.17.0
73
+ version: 1.15.5
63
74
  type: :runtime
64
75
  prerelease: false
65
76
  version_requirements: !ruby/object:Gem::Requirement
66
77
  requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '1.9'
70
- - - "<="
78
+ - - ">="
71
79
  - !ruby/object:Gem::Version
72
- version: 1.17.0
80
+ version: 1.15.5
73
81
  - !ruby/object:Gem::Dependency
74
82
  name: ffi-yajl
75
83
  requirement: !ruby/object:Gem::Requirement
@@ -158,20 +166,14 @@ dependencies:
158
166
  requirements:
159
167
  - - "~>"
160
168
  - !ruby/object:Gem::Version
161
- version: '3.2'
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- version: 3.2.5
169
+ version: 3.3.6
165
170
  type: :runtime
166
171
  prerelease: false
167
172
  version_requirements: !ruby/object:Gem::Requirement
168
173
  requirements:
169
174
  - - "~>"
170
175
  - !ruby/object:Gem::Version
171
- version: '3.2'
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- version: 3.2.5
176
+ version: 3.3.6
175
177
  - !ruby/object:Gem::Dependency
176
178
  name: plist
177
179
  requirement: !ruby/object:Gem::Requirement
@@ -400,7 +402,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
400
402
  requirements:
401
403
  - - ">="
402
404
  - !ruby/object:Gem::Version
403
- version: '2.7'
405
+ version: '3.1'
404
406
  required_rubygems_version: !ruby/object:Gem::Requirement
405
407
  requirements:
406
408
  - - ">="