aboutsummaryrefslogtreecommitdiff
path: root/lib/python/qmk/info.py
diff options
context:
space:
mode:
authorNick Brassel <[email protected]>2024-08-12 22:34:22 +1000
committerGitHub <[email protected]>2024-08-12 22:34:22 +1000
commit380e0c9cad72ac29f858bef85c8b8eb35b6931f0 (patch)
treee711c1d30cb02a931db0b2a91c075dd65a38cb9f /lib/python/qmk/info.py
parent158aaef78c26ea1ade9a5fbc0ee7fbe5b84a6fe9 (diff)
downloadqmk_firmware-380e0c9cad72ac29f858bef85c8b8eb35b6931f0.tar.gz
qmk_firmware-380e0c9cad72ac29f858bef85c8b8eb35b6931f0.zip
Userspace: add support for adding environment variables during build (#22887)
Diffstat (limited to 'lib/python/qmk/info.py')
-rw-r--r--lib/python/qmk/info.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py
index 833271c09c..e295c5cfe0 100644
--- a/lib/python/qmk/info.py
+++ b/lib/python/qmk/info.py
@@ -212,7 +212,7 @@ def _validate(keyboard, info_data):
maybe_exit(1)
-def info_json(keyboard):
+def info_json(keyboard, force_layout=None):
"""Generate the info.json data for a specific keyboard.
"""
cur_dir = Path('keyboards')
@@ -255,6 +255,11 @@ def info_json(keyboard):
# Merge in data from <keyboard.c>
info_data = _extract_led_config(info_data, str(keyboard))
+ # Force a community layout if requested
+ community_layouts = info_data.get("community_layouts", [])
+ if force_layout in community_layouts:
+ info_data["community_layouts"] = [force_layout]
+
# Validate
_validate(keyboard, info_data)
@@ -988,25 +993,25 @@ def find_info_json(keyboard):
return [info_json for info_json in info_jsons if info_json.exists()]
-def keymap_json_config(keyboard, keymap):
+def keymap_json_config(keyboard, keymap, force_layout=None):
"""Extract keymap level config
"""
# TODO: resolve keymap.py and info.py circular dependencies
from qmk.keymap import locate_keymap
- keymap_folder = locate_keymap(keyboard, keymap).parent
+ keymap_folder = locate_keymap(keyboard, keymap, force_layout=force_layout).parent
km_info_json = parse_configurator_json(keymap_folder / 'keymap.json')
return km_info_json.get('config', {})
-def keymap_json(keyboard, keymap):
+def keymap_json(keyboard, keymap, force_layout=None):
"""Generate the info.json data for a specific keymap.
"""
# TODO: resolve keymap.py and info.py circular dependencies
from qmk.keymap import locate_keymap
- keymap_folder = locate_keymap(keyboard, keymap).parent
+ keymap_folder = locate_keymap(keyboard, keymap, force_layout=force_layout).parent
# Files to scan
keymap_config = keymap_folder / 'config.h'
@@ -1014,10 +1019,10 @@ def keymap_json(keyboard, keymap):
keymap_file = keymap_folder / 'keymap.json'
# Build the info.json file
- kb_info_json = info_json(keyboard)
+ kb_info_json = info_json(keyboard, force_layout=force_layout)
# Merge in the data from keymap.json
- km_info_json = keymap_json_config(keyboard, keymap) if keymap_file.exists() else {}
+ km_info_json = keymap_json_config(keyboard, keymap, force_layout=force_layout) if keymap_file.exists() else {}
deep_update(kb_info_json, km_info_json)
# Merge in the data from config.h, and rules.mk