inspec 2.1.72 → 2.1.78

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -13
  3. data/Gemfile +1 -1
  4. data/docs/resources/aws_cloudtrail_trail.md.erb +10 -4
  5. data/docs/resources/aws_cloudtrail_trails.md.erb +6 -1
  6. data/docs/resources/aws_cloudwatch_alarm.md.erb +10 -5
  7. data/docs/resources/aws_cloudwatch_log_metric_filter.md.erb +4 -1
  8. data/docs/resources/aws_config_delivery_channel.md.erb +9 -4
  9. data/docs/resources/aws_config_recorder.md.erb +10 -5
  10. data/docs/resources/aws_ec2_instance.md.erb +6 -0
  11. data/docs/resources/aws_iam_access_key.md.erb +8 -2
  12. data/docs/resources/aws_iam_access_keys.md.erb +11 -5
  13. data/docs/resources/aws_iam_group.md.erb +6 -0
  14. data/docs/resources/aws_iam_groups.md.erb +7 -1
  15. data/docs/resources/aws_iam_password_policy.md.erb +7 -1
  16. data/docs/resources/aws_iam_policies.md.erb +8 -3
  17. data/docs/resources/aws_iam_policy.md.erb +14 -8
  18. data/docs/resources/aws_iam_role.md.erb +6 -0
  19. data/docs/resources/aws_iam_root_user.md.erb +6 -0
  20. data/docs/resources/aws_iam_user.md.erb +9 -4
  21. data/docs/resources/aws_iam_users.md.erb +12 -6
  22. data/docs/resources/aws_kms_key.md.erb +11 -5
  23. data/docs/resources/aws_kms_keys.md.erb +7 -2
  24. data/docs/resources/aws_rds_instance.md.erb +6 -0
  25. data/docs/resources/aws_route_table.md.erb +6 -0
  26. data/docs/resources/aws_route_tables.md.erb +6 -0
  27. data/docs/resources/aws_s3_bucket.md.erb +7 -1
  28. data/docs/resources/aws_s3_bucket_object.md.erb +8 -2
  29. data/docs/resources/aws_s3_buckets.md.erb +7 -1
  30. data/docs/resources/aws_security_group.md.erb +24 -18
  31. data/docs/resources/aws_security_groups.md.erb +6 -0
  32. data/docs/resources/aws_sns_subscription.md.erb +17 -12
  33. data/docs/resources/aws_sns_topic.md.erb +6 -0
  34. data/docs/resources/aws_sns_topics.md.erb +6 -0
  35. data/docs/resources/aws_subnet.md.erb +19 -13
  36. data/docs/resources/aws_subnets.md.erb +6 -0
  37. data/docs/resources/aws_vpc.md.erb +6 -1
  38. data/docs/resources/aws_vpcs.md.erb +6 -0
  39. data/docs/resources/http.md.erb +6 -6
  40. data/inspec.gemspec +3 -1
  41. data/lib/inspec/reporters/automate.rb +1 -1
  42. data/lib/inspec/version.rb +1 -1
  43. data/lib/resources/aws/aws_iam_policy.rb +2 -1
  44. data/lib/resources/aws/aws_security_group.rb +4 -4
  45. metadata +18 -4
@@ -89,3 +89,9 @@ The control will pass if the filter returns at least one result. Use `should_not
89
89
  describe aws_security_groups
90
90
  it { should exist }
91
91
  end
92
+
93
+ ## AWS Permissions
94
+
95
+ Your [Principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) will need the `ec2:DescribeSecurityGroups` action with Effect set to Allow.
96
+
97
+ You can find detailed documentation at [Actions, Resources, and Condition Keys for Amazon EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonec2.html).
@@ -34,7 +34,7 @@ This InSpec resource accepts the following parameters, which are used to search
34
34
 
35
35
  The ARN (Amazon Resource Name) of the AWS SNS Subscription.
36
36
 
37
- # Using Hash syntax
37
+ # Using Hash syntax
38
38
  describe aws_sns_subscription(subscription_arn: 'arn:aws:sns:us-east-1::test-topic-01:b214aff5-a2c7-438f-a753-8494493f2ff6') do
39
39
  it { should exist }
40
40
  end
@@ -52,23 +52,23 @@ The ARN (Amazon Resource Name) of the AWS SNS Subscription.
52
52
 
53
53
  The control will pass if the specified Aws Subscription was found. Use should_not if you want to verify that the specified Subscription does not exist.
54
54
 
55
- # Test that a specific subscription exists.
55
+ # Test that a specific subscription exists.
56
56
  describe aws_sns_subscription(subscription_arn: 'arn:aws:sns:us-east-1::test-topic-01:b214aff5-a2c7-438f-a753-8494493f2ff6')
57
57
  it { should exist }
58
- end
58
+ end
59
59
 
60
60
  # Test that a Subscription does not exist.
61
61
  describe aws_sns_subscription(subscription_arn: 'arn:aws:sns:us-east-1::NOGOOD:b214aff5-a2c7-438f-a753-8494493f2ff6')
62
62
  it { should_not exist }
63
- end
64
-
63
+ end
64
+
65
65
  ### be\_confirmation\_authenticated
66
66
 
67
67
  Provides whether or not the subscription confirmation request was authenticated.
68
68
 
69
69
  describe aws_sns_subscription(subscription_arn: 'arn:aws:sns:us-east-1::NOGOOD:b214aff5-a2c7-438f-a753-8494493f2ff6')
70
70
  it { should be_confirmation_authenticated }
71
- end
71
+ end
72
72
 
73
73
  ### have\_raw\_message\_delivery
74
74
 
@@ -76,7 +76,7 @@ Provides whether or not the original message is passed as is, not formatted as a
76
76
 
77
77
  describe aws_sns_subscription(subscription_arn: 'arn:aws:sns:us-east-1::NOGOOD:b214aff5-a2c7-438f-a753-8494493f2ff6')
78
78
  it { should have_raw_message_delivery }
79
- end
79
+ end
80
80
 
81
81
  ## Properties
82
82
 
@@ -95,19 +95,19 @@ Provides the destination that the SNS Topic will send notifications to.
95
95
  # If the protocol is 'lambda', its endpoint should be the ARN of a AWS Lambda function
96
96
  its('endpoint') { should cmp 'rn:aws:lambda:us-east-1:account-id:function:myfunction' }
97
97
  end
98
-
98
+
99
99
  ### owner
100
100
 
101
- Provides the AWS Owners ID.
101
+ Provides the AWS Owners ID.
102
102
 
103
103
  # Inspect the owners ID
104
104
  describe aws_sns_subscription(subscription_arn: 'arn:aws:sns:us-east-1::test-topic-01:b214aff5-a2c7-438f-a753-8494493f2ff6' ) do
105
105
  its('owner') { should cmp '12345678' }
106
106
  end
107
-
107
+
108
108
  ### protocol
109
109
 
110
- Provides the Subscriptions protocol used. For example http, https, email, email-json, sqs, etc. For more information about protocols please visit https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html
110
+ Provides the Subscriptions protocol used. For example http, https, email, email-json, sqs, etc. For more information about protocols please visit https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html
111
111
 
112
112
  # Inspect the endpoint
113
113
  describe aws_sns_subscription(subscription_arn: 'arn:aws:sns:us-east-1::test-topic-01:b214aff5-a2c7-438f-a753-8494493f2ff6' ) do
@@ -122,4 +122,9 @@ Provides the SNS Topic arn that the Subscription is associated with.
122
122
  describe aws_sns_subscription(subscription_arn: 'arn:aws:sns:us-east-1::test-topic-01:b214aff5-a2c7-438f-a753-8494493f2ff6' ) do
123
123
  its('topic_arn') { should cmp 'arn:aws:sns:us-east-1::test-topic-01' }
124
124
  end
125
-
125
+
126
+ ## AWS Permissions
127
+
128
+ Your [Principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) will need the `sns:GetSubscriptionAttributes` action with Effect set to Allow.
129
+
130
+ You can find detailed documentation at [Actions, Resources, and Condition Keys for Amazon SNS](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsns.html).
@@ -61,3 +61,9 @@ Indicates that the ARN provided was found. Use `should_not` to test for SNS top
61
61
  describe aws_sns_topic('arn:aws:sns:*::bad-news') do
62
62
  it { should_not exist }
63
63
  end
64
+
65
+ ## AWS Permissions
66
+
67
+ Your [Principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) will need the `sns:GetTopicAttributes` action with Effect set to Allow.
68
+
69
+ You can find detailed documentation at [Actions, Resources, and Condition Keys for Amazon SNS](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsns.html).
@@ -50,3 +50,9 @@ Provides an array of all SNS Topic arns.
50
50
  describe aws_sns_topics do
51
51
  its('topic_arns') { should include 'arn:aws:sns:us-east-1:333344445555:MyTopic' }
52
52
  end
53
+
54
+ ## AWS Permissions
55
+
56
+ Your [Principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) will need the `sns:ListTopics` action with Effect set to Allow.
57
+
58
+ You can find detailed documentation at [Actions, Resources, and Condition Keys for Amazon SNS](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsns.html).
@@ -34,7 +34,7 @@ A string identifying the subnet that the VPC contains.
34
34
 
35
35
  # This will error if there is more than the default SG
36
36
  describe aws_subnet(subnet_id: 'subnet-12345678') do
37
- it { should exist }
37
+ it { should exist }
38
38
  end
39
39
 
40
40
  <br>
@@ -52,7 +52,7 @@ A string identifying the subnet that the VPC contains.
52
52
  Provides the Availability Zone of the subnet.
53
53
 
54
54
  describe aws_subnet(subnet_id: 'subnet-12345678') do
55
- its('availability_zone') { should eq 'us-east-1c' }
55
+ its('availability_zone') { should eq 'us-east-1c' }
56
56
  end
57
57
 
58
58
  ### available\_ip\_address\_count
@@ -60,7 +60,7 @@ Provides the Availability Zone of the subnet.
60
60
  Provides the number of available IPv4 addresses on the subnet.
61
61
 
62
62
  describe aws_subnet(subnet_id: 'subnet-12345678') do
63
- its('available_ip_address_count') { should eq 251 }
63
+ its('available_ip_address_count') { should eq 251 }
64
64
  end
65
65
 
66
66
  ### cidr\_block
@@ -68,7 +68,7 @@ Provides the number of available IPv4 addresses on the subnet.
68
68
  Provides the block of ip addresses specified to the subnet.
69
69
 
70
70
  describe aws_subnet(subnet_id: 'subnet-12345678') do
71
- its('cidr_block') { should eq '10.0.1.0/24' }
71
+ its('cidr_block') { should eq '10.0.1.0/24' }
72
72
  end
73
73
 
74
74
  ### subnet\_id
@@ -76,7 +76,7 @@ Provides the block of ip addresses specified to the subnet.
76
76
  Provides the ID of the Subnet.
77
77
 
78
78
  describe aws_subnet(subnet_id: 'subnet-12345678') do
79
- its('subnet_id') { should eq 'subnet-12345678' }
79
+ its('subnet_id') { should eq 'subnet-12345678' }
80
80
  end
81
81
 
82
82
  ### vpc\_id
@@ -84,10 +84,10 @@ Provides the ID of the Subnet.
84
84
  Provides the ID of the VPC the subnet is in.
85
85
 
86
86
  describe aws_subnet(subnet_id: 'subnet-12345678') do
87
- its('vpc_id') { should eq 'vpc-12345678' }
87
+ its('vpc_id') { should eq 'vpc-12345678' }
88
88
  end
89
89
 
90
- <br>
90
+ <br>
91
91
 
92
92
  ## Matchers
93
93
 
@@ -98,15 +98,15 @@ This InSpec audit resource has the following special matchers. For a full list o
98
98
  Detects if the network interface on the subnet accepts IPv6 addresses.
99
99
 
100
100
  describe aws_subnet(subnet_id: 'subnet-12345678') do
101
- it { should be_assigning_ipv_6_address_on_creation }
101
+ it { should be_assigning_ipv_6_address_on_creation }
102
102
  end
103
-
103
+
104
104
  ### available
105
105
 
106
106
  Provides the current state of the subnet.
107
107
 
108
108
  describe aws_subnet(subnet_id: 'subnet-12345678') do
109
- it { should be_available }
109
+ it { should be_available }
110
110
  end
111
111
 
112
112
  ### default\_for\_az
@@ -114,7 +114,7 @@ Provides the current state of the subnet.
114
114
  Detects if the subnet is the default subnet for the Availability Zone.
115
115
 
116
116
  describe aws_subnet(subnet_id: 'subnet-12345678') do
117
- it { should be_default_for_az }
117
+ it { should be_default_for_az }
118
118
  end
119
119
 
120
120
  ### exist
@@ -124,11 +124,17 @@ The `exist` matcher indicates that a subnet exists for the specified vpc.
124
124
  describe aws_subnet(subnet_id: 'subnet-12345678') do
125
125
  it { should exist }
126
126
  end
127
-
127
+
128
128
  ### mapping\_public\_ip\_on\_launch
129
129
 
130
130
  Provides the VPC ID for the subnet.
131
131
 
132
132
  describe aws_subnet(subnet_id: 'subnet-12345678') do
133
- it { should be_mapping_public_ip_on_launch }
133
+ it { should be_mapping_public_ip_on_launch }
134
134
  end
135
+
136
+ ## AWS Permissions
137
+
138
+ Your [Principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) will need the `ec2:DescribeSubnets` action with Effect set to Allow.
139
+
140
+ You can find detailed documentation at [Actions, Resources, and Condition Keys for Amazon EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonec2.html).
@@ -124,3 +124,9 @@ The control will pass if the filter returns at least one result. Use `should_not
124
124
  describe aws_subnets.where(vpc_id: 'vpc-12345678')
125
125
  it { should exist }
126
126
  end
127
+
128
+ ## AWS Permissions
129
+
130
+ Your [Principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) will need the `ec2:DescribeSubnets` action with Effect set to Allow.
131
+
132
+ You can find detailed documentation at [Actions, Resources, and Condition Keys for Amazon EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonec2.html).
@@ -11,7 +11,7 @@ To test properties of all or multiple VPCs, use the `aws_vpcs` resource.
11
11
 
12
12
  A VPC is a networking construct that provides an isolated environment. A VPC is contained in a geographic region, but spans availability zones in that region. A VPC may have multiple subnets, internet gateways, and other networking resources. Computing resources--such as EC2 instances--reside on subnets within the VPC.
13
13
 
14
- Each VPC is uniquely identified by its VPC ID. In addition, each VPC has a non-unique CIDR IP Address range (such as 10.0.0.0/16) which it manages.
14
+ Each VPC is uniquely identified by its VPC ID. In addition, each VPC has a non-unique CIDR IP Address range (such as 10.0.0.0/16) which it manages.
15
15
 
16
16
  Every AWS account has at least one VPC, the "default" VPC, in every region.
17
17
 
@@ -118,3 +118,8 @@ The test will pass if the identified VPC is the default VPC for the region.
118
118
  it { should be_default }
119
119
  end
120
120
 
121
+ ## AWS Permissions
122
+
123
+ Your [Principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) will need the `ec2:DescribeVpcs` action with Effect set to Allow.
124
+
125
+ You can find detailed documentation at [Actions, Resources, and Condition Keys for Amazon EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonec2.html).
@@ -117,3 +117,9 @@ The control will pass if the filter returns at least one result. Use `should_not
117
117
  describe aws_vpcs
118
118
  it { should exist }
119
119
  end
120
+
121
+ ## AWS Permissions
122
+
123
+ Your [Principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) will need the `ec2:DescribeVpcs` action with Effect set to Allow.
124
+
125
+ You can find detailed documentation at [Actions, Resources, and Condition Keys for Amazon EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonec2.html).
@@ -113,7 +113,7 @@ In InSpec 2.0, the HTTP test will automatically execute remotely whenever InSpec
113
113
  ...
114
114
  end
115
115
 
116
- ### headers
116
+ ### headers
117
117
 
118
118
  `{headers}` may be specified for http request headers.
119
119
 
@@ -135,7 +135,7 @@ In InSpec 2.0, the HTTP test will automatically execute remotely whenever InSpec
135
135
 
136
136
  `open_timeout` may be specified for a timeout for opening connections (default to 60).
137
137
 
138
- describe('http://localhost:8080/ping',
138
+ describe('http://localhost:8080/ping',
139
139
  open_timeout: '90') do
140
140
  ...
141
141
  end
@@ -144,7 +144,7 @@ In InSpec 2.0, the HTTP test will automatically execute remotely whenever InSpec
144
144
 
145
145
  `read_timeout` may be specified for a timeout for reading connections (default to 60).
146
146
 
147
- describe('http://localhost:8080/ping',
147
+ describe('http://localhost:8080/ping',
148
148
  read_timeout: '90') do
149
149
  ...
150
150
  end
@@ -153,8 +153,8 @@ In InSpec 2.0, the HTTP test will automatically execute remotely whenever InSpec
153
153
 
154
154
  `ssl_verify` may be specified to enable or disable verification of SSL certificates (default to `true`).
155
155
 
156
- describe('http://localhost:8080/ping',
157
- ssl_verify: 'true') do
156
+ describe('http://localhost:8080/ping',
157
+ ssl_verify: true) do
158
158
  ...
159
159
  end
160
160
 
@@ -194,4 +194,4 @@ The `status` matcher tests status of the http response:
194
194
 
195
195
  ## Matchers
196
196
 
197
- For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
197
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
data/inspec.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.required_ruby_version = '>= 2.3'
28
28
 
29
- spec.add_dependency 'train', '~> 1.4'
29
+ spec.add_dependency 'train', '~> 1.4.9'
30
30
  spec.add_dependency 'thor', '~> 0.20'
31
31
  spec.add_dependency 'json', '>= 1.8', '< 3.0'
32
32
  spec.add_dependency 'method_source', '~> 0.8'
@@ -39,6 +39,8 @@ Gem::Specification.new do |spec|
39
39
  spec.add_dependency 'sslshake', '~> 1.2'
40
40
  spec.add_dependency 'parallel', '~> 1.9'
41
41
  spec.add_dependency 'faraday', '>=0.9.0'
42
+ # Used for Azure profile until integrated into train
43
+ spec.add_dependency 'faraday_middleware', '~> 0.12.2'
42
44
  spec.add_dependency 'tomlrb', '~> 1.2'
43
45
  spec.add_dependency 'addressable', '~> 2.4'
44
46
  spec.add_dependency 'parslet', '~> 1.5'
@@ -23,7 +23,7 @@ module Inspec::Reporters
23
23
  final_report[:node_uuid] = @config['node_uuid'] || @run_data[:platform][:uuid]
24
24
  raise Inspec::ReporterError, 'Cannot find a UUID for your node. Please specify one via json-config.' if final_report[:node_uuid].nil?
25
25
 
26
- final_report[:report_uuid] = uuid_from_string(final_report[:end_time] + final_report[:node_uuid])
26
+ final_report[:report_uuid] = @config['report_uuid'] || uuid_from_string(final_report[:end_time] + final_report[:node_uuid])
27
27
 
28
28
  # optional json-config passthrough options
29
29
  %w{node_name environment roles recipies}.each do |option|
@@ -4,5 +4,5 @@
4
4
  # author: Christoph Hartmann
5
5
 
6
6
  module Inspec
7
- VERSION = '2.1.72'
7
+ VERSION = '2.1.78'
8
8
  end
@@ -93,8 +93,9 @@ class AwsIamPolicy < Inspec.resource(1)
93
93
  end
94
94
  end
95
95
 
96
- def has_statement?(raw_criteria = {})
96
+ def has_statement?(provided_criteria = {})
97
97
  return nil unless exists?
98
+ raw_criteria = provided_criteria.dup # provided_criteria is used for output formatting - can't delete from it.
98
99
  criteria = has_statement__normalize_criteria(has_statement__validate_criteria(raw_criteria))
99
100
  @normalized_statements ||= has_statement__normalize_statements
100
101
  statements = has_statement__focus_on_sid(@normalized_statements, criteria)
@@ -19,22 +19,22 @@ class AwsSecurityGroup < Inspec.resource(1)
19
19
  end
20
20
 
21
21
  def allow_in?(criteria = {})
22
- allow(inbound_rules, criteria)
22
+ allow(inbound_rules, criteria.dup)
23
23
  end
24
24
  RSpec::Matchers.alias_matcher :allow_in, :be_allow_in
25
25
 
26
26
  def allow_out?(criteria = {})
27
- allow(outbound_rules, criteria)
27
+ allow(outbound_rules, criteria.dup)
28
28
  end
29
29
  RSpec::Matchers.alias_matcher :allow_out, :be_allow_out
30
30
 
31
31
  def allow_in_only?(criteria = {})
32
- allow_only(inbound_rules, criteria)
32
+ allow_only(inbound_rules, criteria.dup)
33
33
  end
34
34
  RSpec::Matchers.alias_matcher :allow_in_only, :be_allow_in_only
35
35
 
36
36
  def allow_out_only?(criteria = {})
37
- allow_only(outbound_rules, criteria)
37
+ allow_only(outbound_rules, criteria.dup)
38
38
  end
39
39
  RSpec::Matchers.alias_matcher :allow_out_only, :be_allow_out_only
40
40
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.72
4
+ version: 2.1.78
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominik Richter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-10 00:00:00.000000000 Z
11
+ date: 2018-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: train
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.4'
19
+ version: 1.4.9
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.4'
26
+ version: 1.4.9
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -198,6 +198,20 @@ dependencies:
198
198
  - - ">="
199
199
  - !ruby/object:Gem::Version
200
200
  version: 0.9.0
201
+ - !ruby/object:Gem::Dependency
202
+ name: faraday_middleware
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: 0.12.2
208
+ type: :runtime
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: 0.12.2
201
215
  - !ruby/object:Gem::Dependency
202
216
  name: tomlrb
203
217
  requirement: !ruby/object:Gem::Requirement