diff options
-rw-r--r-- | lib/python/qmk/info.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index e2350b7f7..47c8bff7a 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py | |||
@@ -19,6 +19,12 @@ true_values = ['1', 'on', 'yes'] | |||
19 | false_values = ['0', 'off', 'no'] | 19 | false_values = ['0', 'off', 'no'] |
20 | 20 | ||
21 | 21 | ||
22 | def _valid_community_layout(layout): | ||
23 | """Validate that a declared community list exists | ||
24 | """ | ||
25 | return (Path('layouts/default') / layout).exists() | ||
26 | |||
27 | |||
22 | def info_json(keyboard): | 28 | def info_json(keyboard): |
23 | """Generate the info.json data for a specific keyboard. | 29 | """Generate the info.json data for a specific keyboard. |
24 | """ | 30 | """ |
@@ -71,6 +77,13 @@ def info_json(keyboard): | |||
71 | if not info_data.get('layouts'): | 77 | if not info_data.get('layouts'): |
72 | _log_error(info_data, 'No LAYOUTs defined! Need at least one layout defined in the keyboard.h or info.json.') | 78 | _log_error(info_data, 'No LAYOUTs defined! Need at least one layout defined in the keyboard.h or info.json.') |
73 | 79 | ||
80 | # Filter out any non-existing community layouts | ||
81 | for layout in info_data.get('community_layouts', []): | ||
82 | if not _valid_community_layout(layout): | ||
83 | # Ignore layout from future checks | ||
84 | info_data['community_layouts'].remove(layout) | ||
85 | _log_error(info_data, 'Claims to support a community layout that does not exist: %s' % (layout)) | ||
86 | |||
74 | # Make sure we supply layout macros for the community layouts we claim to support | 87 | # Make sure we supply layout macros for the community layouts we claim to support |
75 | for layout in info_data.get('community_layouts', []): | 88 | for layout in info_data.get('community_layouts', []): |
76 | layout_name = 'LAYOUT_' + layout | 89 | layout_name = 'LAYOUT_' + layout |