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.
- checksums.yaml +7 -0
- data/LICENSE.txt +20 -0
- data/README.md +94 -0
- data/exe/opencontrol-linter +8 -0
- data/lib/opencontrol.rb +3 -0
- data/lib/opencontrol/cli.rb +231 -0
- data/lib/opencontrol/messages.rb +45 -0
- data/lib/opencontrol/version.rb +22 -0
- data/vendor/README.md +9 -0
- data/vendor/schemas/CONTRIBUTING.md +37 -0
- data/vendor/schemas/README.md +175 -0
- data/vendor/schemas/examples/component_v3.0.0.yaml +70 -0
- data/vendor/schemas/examples/component_v3.1.0.yaml +81 -0
- data/vendor/schemas/examples/opencontrol_v1.0.0.yaml +22 -0
- data/vendor/schemas/kwalify/README.md +31 -0
- data/vendor/schemas/kwalify/certification/v1.0.0.yaml +12 -0
- data/vendor/schemas/kwalify/component/test_data_validity.py +25 -0
- data/vendor/schemas/kwalify/component/v1.0.0.yaml +100 -0
- data/vendor/schemas/kwalify/component/v2.0.0.yaml +100 -0
- data/vendor/schemas/kwalify/component/v3.0.0.yaml +112 -0
- data/vendor/schemas/kwalify/component/v3.1.0.yaml +138 -0
- data/vendor/schemas/kwalify/opencontrol/v1.0.0.yaml +67 -0
- data/vendor/schemas/kwalify/requirements.txt +3 -0
- data/vendor/schemas/kwalify/standard/v1.0.0.yaml +14 -0
- data/vendor/schemas/transformation-scripts/utils.py +12 -0
- data/vendor/schemas/transformation-scripts/v1_example.yaml +40 -0
- data/vendor/schemas/transformation-scripts/v1_from_v2_example.yaml +41 -0
- data/vendor/schemas/transformation-scripts/v1_to_v2.py +75 -0
- data/vendor/schemas/transformation-scripts/v2_example.yaml +45 -0
- data/vendor/schemas/transformation-scripts/v2_from_v1_example.yaml +45 -0
- data/vendor/schemas/transformation-scripts/v2_to_v1.py +74 -0
- 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,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: []
|