opencontrol-linter 0.1

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 (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: []