|
|
@@ -2,22 +2,38 @@
|
|
|
"""
|
|
|
import json
|
|
|
import gzip
|
|
|
+from pathlib import Path
|
|
|
|
|
|
from qmk.info import keymap_json
|
|
|
from qmk.commands import get_chunks, dump_lines
|
|
|
+from qmk.json_schema import deep_update, json_load
|
|
|
|
|
|
from qmk.constants import GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE
|
|
|
|
|
|
|
|
|
-def generate_blob(output_file, keyboard, keymap):
|
|
|
- # Build the info.json file
|
|
|
+def _build_info(keyboard, keymap):
|
|
|
+ """Build the xap version of info.json
|
|
|
+ """
|
|
|
+ defaults_json = json_load(Path('data/mappings/xap_defaults.json'))
|
|
|
km_info_json = keymap_json(keyboard, keymap)
|
|
|
|
|
|
+ info_json = {}
|
|
|
+ deep_update(info_json, defaults_json)
|
|
|
+ deep_update(info_json, km_info_json)
|
|
|
+
|
|
|
# TODO: Munge to XAP requirements
|
|
|
- del km_info_json['config_h_features']
|
|
|
+ del info_json['config_h_features']
|
|
|
+
|
|
|
+ return info_json
|
|
|
+
|
|
|
+
|
|
|
+def generate_blob(output_file, keyboard, keymap):
|
|
|
+ """Generate XAP payload
|
|
|
+ """
|
|
|
+ info_json = _build_info(keyboard, keymap)
|
|
|
|
|
|
# Minify
|
|
|
- str_data = json.dumps(km_info_json, separators=(',', ':'))
|
|
|
+ str_data = json.dumps(info_json, separators=(',', ':'))
|
|
|
|
|
|
# Compress
|
|
|
compressed = gzip.compress(str_data.encode("utf-8"), compresslevel=9)
|