opencontrol-linter 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +20 -0
  3. data/README.md +94 -0
  4. data/exe/opencontrol-linter +8 -0
  5. data/lib/opencontrol.rb +3 -0
  6. data/lib/opencontrol/cli.rb +231 -0
  7. data/lib/opencontrol/messages.rb +45 -0
  8. data/lib/opencontrol/version.rb +22 -0
  9. data/vendor/README.md +9 -0
  10. data/vendor/schemas/CONTRIBUTING.md +37 -0
  11. data/vendor/schemas/README.md +175 -0
  12. data/vendor/schemas/examples/component_v3.0.0.yaml +70 -0
  13. data/vendor/schemas/examples/component_v3.1.0.yaml +81 -0
  14. data/vendor/schemas/examples/opencontrol_v1.0.0.yaml +22 -0
  15. data/vendor/schemas/kwalify/README.md +31 -0
  16. data/vendor/schemas/kwalify/certification/v1.0.0.yaml +12 -0
  17. data/vendor/schemas/kwalify/component/test_data_validity.py +25 -0
  18. data/vendor/schemas/kwalify/component/v1.0.0.yaml +100 -0
  19. data/vendor/schemas/kwalify/component/v2.0.0.yaml +100 -0
  20. data/vendor/schemas/kwalify/component/v3.0.0.yaml +112 -0
  21. data/vendor/schemas/kwalify/component/v3.1.0.yaml +138 -0
  22. data/vendor/schemas/kwalify/opencontrol/v1.0.0.yaml +67 -0
  23. data/vendor/schemas/kwalify/requirements.txt +3 -0
  24. data/vendor/schemas/kwalify/standard/v1.0.0.yaml +14 -0
  25. data/vendor/schemas/transformation-scripts/utils.py +12 -0
  26. data/vendor/schemas/transformation-scripts/v1_example.yaml +40 -0
  27. data/vendor/schemas/transformation-scripts/v1_from_v2_example.yaml +41 -0
  28. data/vendor/schemas/transformation-scripts/v1_to_v2.py +75 -0
  29. data/vendor/schemas/transformation-scripts/v2_example.yaml +45 -0
  30. data/vendor/schemas/transformation-scripts/v2_from_v1_example.yaml +45 -0
  31. data/vendor/schemas/transformation-scripts/v2_to_v1.py +74 -0
  32. metadata +320 -0
@@ -0,0 +1,67 @@
1
+ type: map
2
+ mapping:
3
+ name:
4
+ type: str
5
+ required: true
6
+ schema_version:
7
+ type: str
8
+ required: true
9
+ metadata:
10
+ type: map
11
+ mapping:
12
+ description:
13
+ type: str
14
+ required: true
15
+ maintainers:
16
+ required: true
17
+ type: seq
18
+ sequence:
19
+ - type: str
20
+ components:
21
+ type: seq
22
+ sequence:
23
+ - type: str
24
+ certifications:
25
+ type: seq
26
+ sequence:
27
+ - type: str
28
+ standards:
29
+ type: seq
30
+ sequence:
31
+ - type: str
32
+ dependencies:
33
+ type: map
34
+ mapping:
35
+ certifications:
36
+ type: seq
37
+ sequence:
38
+ - type: map
39
+ mapping:
40
+ url:
41
+ type: str
42
+ contextdir:
43
+ type: str
44
+ revision:
45
+ type: str
46
+ standards:
47
+ type: seq
48
+ sequence:
49
+ - type: map
50
+ mapping:
51
+ url:
52
+ type: str
53
+ contextdir:
54
+ type: str
55
+ revision:
56
+ type: str
57
+ systems:
58
+ type: seq
59
+ sequence:
60
+ - type: map
61
+ mapping:
62
+ url:
63
+ type: str
64
+ contextdir:
65
+ type: str
66
+ revision:
67
+ type: str
@@ -0,0 +1,3 @@
1
+ pykwalify~=1.7.0
2
+ pytest~=3.0.0
3
+ PyYAML~=3.11
@@ -0,0 +1,14 @@
1
+ type: map
2
+ mapping:
3
+ =:
4
+ type: map
5
+ mapping:
6
+ name:
7
+ type: str
8
+ family:
9
+ type: str
10
+ description:
11
+ type: str
12
+
13
+ name:
14
+ type: str
@@ -0,0 +1,12 @@
1
+ """ These are shared functions between v2_to_v1 and v1_to_v2 """
2
+
3
+ def add_if_exists(new_data, old_data, field):
4
+ """ Adds the field to the new data if it exists in the old data """
5
+ if field in old_data:
6
+ new_data[field] = old_data.get(field)
7
+
8
+
9
+ def transport_usable_data(new_data, old_data):
10
+ """ Adds the data structures that haven't changed to the new dictionary """
11
+ for field in old_data:
12
+ add_if_exists(new_data=new_data, old_data=old_data, field=field)
@@ -0,0 +1,40 @@
1
+ name: Amazon Elastic Compute Cloud # Name of the component
2
+ documentation_complete: false # Manual check if the documentation is complete (for gap analysis)
3
+ references:
4
+ - name: Reference # Name of the reference ie. EC2 website
5
+ path: http://VerificationURL.com # Url of the reference
6
+ type: URL # type of reference (will affect how it's rendered in the documentation)
7
+ verifications:
8
+ EC2_Verification_1: # ID of verification
9
+ name: EC2 Verification 1 # Name of verification
10
+ path: http://VerificationURL.com # URL of the verification
11
+ type: URL # type of reference (will affect how it's rendered in the documentation)
12
+ EC2_Verification_2:
13
+ name: EC2 Governor 2
14
+ path: artifact-ec2-1.png
15
+ type: Image
16
+ satisfies:
17
+ NIST-800-53:
18
+ CM-2:
19
+ narrative: Justification in narrative form # Justification text
20
+ implementation_status: partial # Manual status of implementation (for gap analysis)
21
+ references:
22
+ - verification: EC2_Verification_1 # The specific verification ID that the reference links, no component or system is needed for internal references
23
+ - system: CloudFoundry # System name of the verification (can link to other systems / components)
24
+ component: UAA # System name of the verification (can link to other systems / components)
25
+ verification: UAA_Verification_1 # The specific verification ID that the reference links to
26
+ PCI-DSS-MAY-2015:
27
+ 1.1:
28
+ narrative: Justification in narrative form # Justification text
29
+ implementation_status: partial # Manual status of implementation (for gap analysis)
30
+ references:
31
+ - verification: EC2_Verification_1 # The specific verification ID that the reference links, no component or system is needed for internal references
32
+ - system: CloudFoundry # System name of the verification (can link to other systems / components)
33
+ component: UAA # System name of the verification (can link to other systems / components)
34
+ verification: UAA_Verification_1 # The specific verification ID that the reference links to
35
+ 1.1.1:
36
+ narrative: Justification in narrative form # Justification text
37
+ implementation_status: partial # Manual status of implementation (for gap analysis)
38
+ 2.1:
39
+ narrative: Justification in narrative form # Justification text
40
+ implementation_status: partial # Manual status of implementation (for gap analysis)
@@ -0,0 +1,41 @@
1
+ documentation_complete: false
2
+ name: Amazon Elastic Compute Cloud
3
+ references:
4
+ - name: Reference
5
+ path: http://VerificationURL.com
6
+ type: URL
7
+ satisfies:
8
+ NIST-800-53:
9
+ CM-2:
10
+ implementation_status: partial
11
+ narrative: Justification in narrative form
12
+ references:
13
+ - verification: EC2_Verification_1
14
+ - component: UAA
15
+ system: CloudFoundry
16
+ verification: UAA_Verification_1
17
+ PCI-DSS-MAY-2015:
18
+ 1.1:
19
+ implementation_status: partial
20
+ narrative: Justification in narrative form
21
+ references:
22
+ - verification: EC2_Verification_1
23
+ - component: UAA
24
+ system: CloudFoundry
25
+ verification: UAA_Verification_1
26
+ 2.1:
27
+ implementation_status: partial
28
+ narrative: Justification in narrative form
29
+ 1.1.1:
30
+ implementation_status: partial
31
+ narrative: Justification in narrative form
32
+ schema_version: 2.0
33
+ verifications:
34
+ EC2_Verification_1:
35
+ name: EC2 Verification 1
36
+ path: http://VerificationURL.com
37
+ type: URL
38
+ EC2_Verification_2:
39
+ name: EC2 Governor 2
40
+ path: artifact-ec2-1.png
41
+ type: Image
@@ -0,0 +1,75 @@
1
+ """ Python script to convert Open Controls schema version v1.0 to v2.0 """
2
+
3
+ import yaml
4
+ import glob
5
+
6
+ from utils import add_if_exists, transport_usable_data
7
+
8
+
9
+ def flatten_verifications(old_verifications):
10
+ """ Convert verifications from v1 to v2 """
11
+ new_verifications = []
12
+ for key in old_verifications:
13
+ verification = old_verifications[key]
14
+ verification['key'] = key
15
+ new_verifications.append(verification)
16
+ return new_verifications
17
+
18
+
19
+ def transform_references(old_references):
20
+ """ Covert old reference format to new reference format """
21
+ new_references = []
22
+ for ref in old_references:
23
+ new_ref = {}
24
+ new_ref['verification_key'] = ref['verification']
25
+ component_key = ref.get('component')
26
+ system_key = ref.get('system')
27
+ if component_key:
28
+ new_ref['component_key'] = component_key
29
+ if system_key:
30
+ new_ref['system_key'] = system_key
31
+ new_references.append(new_ref)
32
+ return new_references
33
+
34
+
35
+ def convert_satisfies(old_satisfies):
36
+ """ Convert satisfies objects from v1 to v2 """
37
+ new_satisfies = []
38
+ for standard_key in old_satisfies:
39
+ for control_key in old_satisfies[standard_key]:
40
+ new_control_dict = {
41
+ 'standard_key': standard_key,
42
+ 'control_key': control_key
43
+ }
44
+ old_control_dict = old_satisfies[standard_key][control_key]
45
+ add_if_exists(
46
+ new_data=new_control_dict,
47
+ old_data=old_control_dict,
48
+ field='narrative'
49
+ )
50
+ add_if_exists(
51
+ new_data=new_control_dict,
52
+ old_data=old_control_dict,
53
+ field='implementation_status'
54
+ )
55
+ print(old_control_dict)
56
+ new_control_dict['covered_by'] = transform_references(
57
+ old_control_dict.get('references', {})
58
+ )
59
+ new_satisfies.append(new_control_dict)
60
+ return new_satisfies
61
+
62
+
63
+ def convert(old_data):
64
+ """ Convert the data from the v2 to v1 """
65
+ new_data = {}
66
+ transport_usable_data(new_data=new_data, old_data=old_data)
67
+ verifications = flatten_verifications(old_data.get('verifications', {}))
68
+ if verifications:
69
+ new_data['verifications'] = verifications
70
+ satisfies = convert_satisfies(old_data.get('satisfies', {}))
71
+ if satisfies:
72
+ new_data['satisfies'] = satisfies
73
+ # Tag new schema version
74
+ new_data['schema_version'] = 2.0
75
+ return new_data
@@ -0,0 +1,45 @@
1
+ documentation_complete: false
2
+ name: Amazon Elastic Compute Cloud
3
+ references:
4
+ - name: Reference
5
+ path: http://VerificationURL.com
6
+ type: URL
7
+ satisfies:
8
+ - control_key: 1.1.1
9
+ covered_by: []
10
+ implementation_status: partial
11
+ narrative: Justification in narrative form
12
+ standard_key: PCI-DSS-MAY-2015
13
+ - control_key: 1.1
14
+ covered_by:
15
+ - verification_key: EC2_Verification_1
16
+ - component_key: UAA
17
+ system_key: CloudFoundry
18
+ verification_key: UAA_Verification_1
19
+ implementation_status: partial
20
+ narrative: Justification in narrative form
21
+ standard_key: PCI-DSS-MAY-2015
22
+ - control_key: 2.1
23
+ covered_by: []
24
+ implementation_status: partial
25
+ narrative: Justification in narrative form
26
+ standard_key: PCI-DSS-MAY-2015
27
+ - control_key: CM-2
28
+ covered_by:
29
+ - verification_key: EC2_Verification_1
30
+ - component_key: UAA
31
+ system_key: CloudFoundry
32
+ verification_key: UAA_Verification_1
33
+ implementation_status: partial
34
+ narrative: Justification in narrative form
35
+ standard_key: NIST-800-53
36
+ verifications:
37
+ - key: EC2_Verification_2
38
+ name: EC2 Governor 2
39
+ path: artifact-ec2-1.png
40
+ type: Image
41
+ - key: EC2_Verification_1
42
+ name: EC2 Verification 1
43
+ path: http://VerificationURL.com
44
+ type: URL
45
+ schema_version: 2.0
@@ -0,0 +1,45 @@
1
+ documentation_complete: false
2
+ name: Amazon Elastic Compute Cloud
3
+ references:
4
+ - name: Reference
5
+ path: http://VerificationURL.com
6
+ type: URL
7
+ satisfies:
8
+ - control_key: CM-2
9
+ covered_by:
10
+ - verification_key: EC2_Verification_1
11
+ - component_key: UAA
12
+ system_key: CloudFoundry
13
+ verification_key: UAA_Verification_1
14
+ implementation_status: partial
15
+ narrative: Justification in narrative form
16
+ standard_key: NIST-800-53
17
+ - control_key: 1.1.1
18
+ covered_by: []
19
+ implementation_status: partial
20
+ narrative: Justification in narrative form
21
+ standard_key: PCI-DSS-MAY-2015
22
+ - control_key: 1.1
23
+ covered_by:
24
+ - verification_key: EC2_Verification_1
25
+ - component_key: UAA
26
+ system_key: CloudFoundry
27
+ verification_key: UAA_Verification_1
28
+ implementation_status: partial
29
+ narrative: Justification in narrative form
30
+ standard_key: PCI-DSS-MAY-2015
31
+ - control_key: 2.1
32
+ covered_by: []
33
+ implementation_status: partial
34
+ narrative: Justification in narrative form
35
+ standard_key: PCI-DSS-MAY-2015
36
+ schema_version: 2.0
37
+ verifications:
38
+ - key: EC2_Verification_1
39
+ name: EC2 Verification 1
40
+ path: http://VerificationURL.com
41
+ type: URL
42
+ - key: EC2_Verification_2
43
+ name: EC2 Governor 2
44
+ path: artifact-ec2-1.png
45
+ type: Image
@@ -0,0 +1,74 @@
1
+ """ Python script to convert Open Controls schema version v2.0 to v1.0 """
2
+
3
+ import yaml
4
+
5
+ from utils import add_if_exists, transport_usable_data
6
+
7
+
8
+ def unflatten_verifications(old_verifications):
9
+ """ Convert verifications from v2 to v1 """
10
+ new_verifications = {}
11
+ for verification in old_verifications:
12
+ key = verification['key']
13
+ del verification['key']
14
+ new_verifications[key] = verification
15
+ return new_verifications
16
+
17
+
18
+ def transform_covered_by(covered_by):
19
+ """ Transform covered_by to references as in version 1.0 """
20
+ new_references = []
21
+ for ref in covered_by:
22
+ new_ref = {}
23
+ new_ref['verification'] = ref['verification_key']
24
+ component_key = ref.get('component_key')
25
+ system_key = ref.get('system_key')
26
+ if component_key:
27
+ new_ref['component'] = component_key
28
+ if system_key:
29
+ new_ref['system'] = system_key
30
+ new_references.append(new_ref)
31
+ return new_references
32
+
33
+
34
+ def unflatten_satisfies(old_satisfies):
35
+ """ Convert satisfies from v2 to v1 """
36
+ new_satisfies = {}
37
+ for element in old_satisfies:
38
+ new_element = {}
39
+ # Handle exsiting data
40
+ add_if_exists(
41
+ new_data=new_element,
42
+ old_data=element,
43
+ field='narrative'
44
+ )
45
+ add_if_exists(
46
+ new_data=new_element,
47
+ old_data=element,
48
+ field='implementation_status'
49
+ )
50
+ # Handle covered_by
51
+ references = transform_covered_by(element.get('covered_by', {}))
52
+ control_key = element['control_key']
53
+ standard_key = element['standard_key']
54
+ if references:
55
+ new_element['references'] = references
56
+ # Unflatten
57
+ if standard_key not in new_satisfies:
58
+ new_satisfies[standard_key] = {}
59
+ if control_key not in new_satisfies[standard_key]:
60
+ new_satisfies[standard_key][control_key] = new_element
61
+ return new_satisfies
62
+
63
+
64
+ def convert(old_data):
65
+ """ Convert the data from the v2 to v1 """
66
+ new_data = {}
67
+ transport_usable_data(new_data=new_data, old_data=old_data)
68
+ verifications = unflatten_verifications(old_data.get('verifications', {}))
69
+ if verifications:
70
+ new_data['verifications'] = verifications
71
+ satisfies = unflatten_satisfies(old_data.get('satisfies', {}))
72
+ if satisfies:
73
+ new_data['satisfies'] = satisfies
74
+ return new_data
metadata ADDED
@@ -0,0 +1,320 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: opencontrol-linter
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Adrian Kierman
8
+ - James Connor
9
+ autorequire:
10
+ bindir: exe
11
+ cert_chain: []
12
+ date: 2019-02-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: colorize
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 0.8.1
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 0.8.1
28
+ - !ruby/object:Gem::Dependency
29
+ name: kwalify
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: 0.7.2
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 0.7.2
42
+ - !ruby/object:Gem::Dependency
43
+ name: parallel
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.10'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.10'
56
+ - !ruby/object:Gem::Dependency
57
+ name: powerpack
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 0.1.2
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 0.1.2
70
+ - !ruby/object:Gem::Dependency
71
+ name: psych
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 3.1.0
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 3.1.0
84
+ - !ruby/object:Gem::Dependency
85
+ name: rainbow
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 2.2.2
91
+ - - "<"
92
+ - !ruby/object:Gem::Version
93
+ version: '4.0'
94
+ type: :runtime
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: 2.2.2
101
+ - - "<"
102
+ - !ruby/object:Gem::Version
103
+ version: '4.0'
104
+ - !ruby/object:Gem::Dependency
105
+ name: rationalist
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 2.0.0
111
+ type: :runtime
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 2.0.0
118
+ - !ruby/object:Gem::Dependency
119
+ name: ruby-progressbar
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.7'
125
+ type: :runtime
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.7'
132
+ - !ruby/object:Gem::Dependency
133
+ name: bundler
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: 1.3.0
139
+ - - "<"
140
+ - !ruby/object:Gem::Version
141
+ version: '3.0'
142
+ type: :development
143
+ prerelease: false
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: 1.3.0
149
+ - - "<"
150
+ - !ruby/object:Gem::Version
151
+ version: '3.0'
152
+ - !ruby/object:Gem::Dependency
153
+ name: pry
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: 0.12.2
159
+ type: :development
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: 0.12.2
166
+ - !ruby/object:Gem::Dependency
167
+ name: rack
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '2.0'
173
+ type: :development
174
+ prerelease: false
175
+ version_requirements: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '2.0'
180
+ - !ruby/object:Gem::Dependency
181
+ name: rake
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: 12.3.2
187
+ type: :development
188
+ prerelease: false
189
+ version_requirements: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: 12.3.2
194
+ - !ruby/object:Gem::Dependency
195
+ name: rspec
196
+ requirement: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: 3.8.0
201
+ type: :development
202
+ prerelease: false
203
+ version_requirements: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: 3.8.0
208
+ - !ruby/object:Gem::Dependency
209
+ name: rubocop-rspec
210
+ requirement: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: 1.29.0
215
+ type: :development
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: 1.29.0
222
+ - !ruby/object:Gem::Dependency
223
+ name: simplecov
224
+ requirement: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - "~>"
227
+ - !ruby/object:Gem::Version
228
+ version: 0.16.1
229
+ type: :development
230
+ prerelease: false
231
+ version_requirements: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - "~>"
234
+ - !ruby/object:Gem::Version
235
+ version: 0.16.1
236
+ - !ruby/object:Gem::Dependency
237
+ name: rspec_junit_formatter
238
+ requirement: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - "~>"
241
+ - !ruby/object:Gem::Version
242
+ version: 0.4.1
243
+ type: :development
244
+ prerelease: false
245
+ version_requirements: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - "~>"
248
+ - !ruby/object:Gem::Version
249
+ version: 0.4.1
250
+ description: |2
251
+ Automatic Open Control schema checking tool.
252
+ Aims to provide quick tests that ensure open control controls work together reliably.
253
+ email:
254
+ executables:
255
+ - opencontrol-linter
256
+ extensions: []
257
+ extra_rdoc_files:
258
+ - LICENSE.txt
259
+ - README.md
260
+ files:
261
+ - LICENSE.txt
262
+ - README.md
263
+ - exe/opencontrol-linter
264
+ - lib/opencontrol.rb
265
+ - lib/opencontrol/cli.rb
266
+ - lib/opencontrol/messages.rb
267
+ - lib/opencontrol/version.rb
268
+ - vendor/README.md
269
+ - vendor/schemas/CONTRIBUTING.md
270
+ - vendor/schemas/README.md
271
+ - vendor/schemas/examples/component_v3.0.0.yaml
272
+ - vendor/schemas/examples/component_v3.1.0.yaml
273
+ - vendor/schemas/examples/opencontrol_v1.0.0.yaml
274
+ - vendor/schemas/kwalify/README.md
275
+ - vendor/schemas/kwalify/certification/v1.0.0.yaml
276
+ - vendor/schemas/kwalify/component/test_data_validity.py
277
+ - vendor/schemas/kwalify/component/v1.0.0.yaml
278
+ - vendor/schemas/kwalify/component/v2.0.0.yaml
279
+ - vendor/schemas/kwalify/component/v3.0.0.yaml
280
+ - vendor/schemas/kwalify/component/v3.1.0.yaml
281
+ - vendor/schemas/kwalify/opencontrol/v1.0.0.yaml
282
+ - vendor/schemas/kwalify/requirements.txt
283
+ - vendor/schemas/kwalify/standard/v1.0.0.yaml
284
+ - vendor/schemas/transformation-scripts/utils.py
285
+ - vendor/schemas/transformation-scripts/v1_example.yaml
286
+ - vendor/schemas/transformation-scripts/v1_from_v2_example.yaml
287
+ - vendor/schemas/transformation-scripts/v1_to_v2.py
288
+ - vendor/schemas/transformation-scripts/v2_example.yaml
289
+ - vendor/schemas/transformation-scripts/v2_from_v1_example.yaml
290
+ - vendor/schemas/transformation-scripts/v2_to_v1.py
291
+ homepage: https://github.com/adriankierman/opencontrol
292
+ licenses:
293
+ - MIT
294
+ metadata:
295
+ homepage_uri: https://github.com/adriankierman/opencontrol/
296
+ changelog_uri: https://github.com/adriankierman/opencontrol/blob/master/CHANGELOG.md
297
+ source_code_uri: https://github.com/adriankierman/opencontrol
298
+ documentation_uri: https://github.com/adriankierman/opencontrol
299
+ bug_tracker_uri: https://github.com/adriankierman/opencontrol/issues
300
+ post_install_message:
301
+ rdoc_options: []
302
+ require_paths:
303
+ - lib
304
+ required_ruby_version: !ruby/object:Gem::Requirement
305
+ requirements:
306
+ - - ">="
307
+ - !ruby/object:Gem::Version
308
+ version: 2.2.2
309
+ required_rubygems_version: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: '0'
314
+ requirements: []
315
+ rubyforge_project:
316
+ rubygems_version: 2.5.2.1
317
+ signing_key:
318
+ specification_version: 4
319
+ summary: Automatic open control linting tool.
320
+ test_files: []