Skip to content

Commit be65b30

Browse files
authored
Merge pull request #91 from DigiDNA/manifest_check_improvements
Preference manifest check improvements
2 parents d23e029 + 531c504 commit be65b30

File tree

3 files changed

+22
-19
lines changed

3 files changed

+22
-19
lines changed

pre_commit_hooks/check_jamf_json_manifests.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,21 @@
99
import json
1010
from datetime import datetime
1111

12-
from pre_commit_hooks.util import PLIST_TYPES, validate_required_keys
12+
from pre_commit_hooks.util import validate_required_keys
1313

1414
# Types found in the Jamf JSON manifests
15-
MANIFEST_TYPES = (
16-
"array",
17-
"boolean",
18-
"data",
19-
"date",
20-
"float",
21-
"integer",
22-
"number",
23-
"object",
24-
"real",
25-
"string",
26-
)
15+
MANIFEST_TYPES = {
16+
"array": list,
17+
"boolean": bool,
18+
"data": str,
19+
"date": datetime,
20+
"float": float,
21+
"integer": int,
22+
"number": int,
23+
"object": dict,
24+
"real": float,
25+
"string": str,
26+
}
2727

2828
# List keys and their expected item types
2929
MANIFEST_LIST_TYPES = {
@@ -132,9 +132,9 @@ def validate_default(name, prop, type_found, filename):
132132
actual_type = str
133133
else:
134134
actual_type = type(prop[test_key])
135-
if actual_type != PLIST_TYPES.get(type_found):
135+
if actual_type != MANIFEST_TYPES.get(type_found):
136136
print(
137-
f"{filename}: {test_key} value for {name} should be {PLIST_TYPES.get(type_found)}, not {type(prop[test_key])}"
137+
f"{filename}: {test_key} value for {name} should be {MANIFEST_TYPES.get(type_found)}, not {type(prop[test_key])}"
138138
)
139139
passed = False
140140

pre_commit_hooks/check_preference_manifests.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,9 @@ def validate_pfm_type_strings(subkey, filename):
184184
print(f'{filename}: WARNING: Subkey type "{subkey["pfm_type"]}" is deprecated')
185185
# passed = False
186186
elif subkey["pfm_type"] not in PLIST_TYPES:
187-
print(f'{filename}: Unexpected subkey type "{subkey["pfm_type"]}"')
187+
print(
188+
f'{filename}: Unexpected subkey type {subkey["pfm_type"]} for {subkey.get("pfm_name")}'
189+
)
188190
passed = False
189191

190192
return passed
@@ -282,7 +284,7 @@ def validate_pfm_default(subkey, filename):
282284
# continue
283285
# else:
284286
desired_type = PLIST_TYPES[subkey["pfm_type"]]
285-
if isinstance(subkey[test_key], desired_type):
287+
if not isinstance(subkey[test_key], desired_type):
286288
print(
287289
f"{filename}: {test_key} value for {subkey.get('pfm_name')} should be type "
288290
f"{PLIST_TYPES[subkey['pfm_type']]}, not type {type(subkey[test_key])}"
@@ -333,6 +335,7 @@ def validate_platforms(subkey, filename):
333335
def validate_subkeys(subkeys, filename):
334336
"""Given a list of subkeys, run validation on their contents."""
335337
passed = True
338+
type_passed = True
336339

337340
for subkey in subkeys:
338341

@@ -355,6 +358,7 @@ def validate_subkeys(subkeys, filename):
355358
# Check for rogue pfm_type strings and deprecated keys.
356359
if not validate_pfm_type_strings(subkey, filename):
357360
passed = False
361+
type_passed = False
358362

359363
# TODO: Suggest adding a title if one is missing
360364
# if "pfm_title" not in subkey:
@@ -378,7 +382,7 @@ def validate_subkeys(subkeys, filename):
378382
passed = False
379383

380384
# Check default values to ensure consistent type
381-
if not validate_pfm_default(subkey, filename):
385+
if type_passed and not validate_pfm_default(subkey, filename):
382386
passed = False
383387

384388
# Validate URLs

pre_commit_hooks/util.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
"integer": int,
1818
"array": list,
1919
"data": None, # TODO: How to represent this?
20-
"float": float,
2120
"real": float,
2221
"date": datetime,
2322
}

0 commit comments

Comments
 (0)