From ff20610889eb62d7000e172680b28a5c1bfa549c Mon Sep 17 00:00:00 2001
From: zvecr <git@zvecr.com>
Date: Wed, 19 Oct 2022 17:42:21 +0100
Subject: [PATCH 1/2] Add converter support to keymap.json

---
 data/schemas/keymap.jsonschema          | 4 ++++
 lib/python/qmk/cli/generate/rules_mk.py | 5 +++++
 2 files changed, 9 insertions(+)

diff --git a/data/schemas/keymap.jsonschema b/data/schemas/keymap.jsonschema
index 0a4fb5d45347..1b8d01bcc617 100644
--- a/data/schemas/keymap.jsonschema
+++ b/data/schemas/keymap.jsonschema
@@ -5,6 +5,10 @@
     "type": "object",
     "properties": {
         "author": {"type": "string"},
+        "converter": {
+            "type": "string",
+            "enum": ["elite_pi", "proton_c", "kb2040", "promicro_rp2040", "blok", "bit_c_pro", "stemcell", "bonsai_c4"]
+        },
         "host_language": {"$ref": "qmk.definitions.v1#/text_identifier"},
         "keyboard": {"$ref": "qmk.definitions.v1#/text_identifier"},
         "keymap": {"$ref": "qmk.definitions.v1#/text_identifier"},
diff --git a/lib/python/qmk/cli/generate/rules_mk.py b/lib/python/qmk/cli/generate/rules_mk.py
index 361d3c758a2f..d40274ebd342 100755
--- a/lib/python/qmk/cli/generate/rules_mk.py
+++ b/lib/python/qmk/cli/generate/rules_mk.py
@@ -49,10 +49,12 @@ def process_mapping_rule(kb_info_json, rules_key, info_dict):
 def generate_rules_mk(cli):
     """Generates a rules.mk file from info.json.
     """
+    converter = None
     # Determine our keyboard/keymap
     if cli.args.filename:
         user_keymap = parse_configurator_json(cli.args.filename)
         kb_info_json = user_keymap.get('config', {})
+        converter = user_keymap.get('converter', None)
     elif cli.args.keyboard:
         kb_info_json = dotty(info_json(cli.args.keyboard))
     else:
@@ -88,6 +90,9 @@ def generate_rules_mk(cli):
         else:
             rules_mk_lines.append('CUSTOM_MATRIX ?= yes')
 
+    if converter:
+        rules_mk_lines.append(f'CONVERT_TO ?= {converter}')
+
     # Show the results
     dump_lines(cli.args.output, rules_mk_lines)
 

From 8422874e8d6733c6e9c7f4a82feefa59e5f2d958 Mon Sep 17 00:00:00 2001
From: zvecr <git@zvecr.com>
Date: Wed, 19 Oct 2022 23:19:30 +0100
Subject: [PATCH 2/2] Add dotty

---
 lib/python/qmk/cli/generate/config_h.py | 2 +-
 lib/python/qmk/cli/generate/rules_mk.py | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/python/qmk/cli/generate/config_h.py b/lib/python/qmk/cli/generate/config_h.py
index fa7c43788d64..f64daba13422 100755
--- a/lib/python/qmk/cli/generate/config_h.py
+++ b/lib/python/qmk/cli/generate/config_h.py
@@ -174,7 +174,7 @@ def generate_config_h(cli):
     # Determine our keyboard/keymap
     if cli.args.filename:
         user_keymap = parse_configurator_json(cli.args.filename)
-        kb_info_json = user_keymap.get('config', {})
+        kb_info_json = dotty(user_keymap.get('config', {}))
     elif cli.args.keyboard:
         kb_info_json = dotty(info_json(cli.args.keyboard))
     else:
diff --git a/lib/python/qmk/cli/generate/rules_mk.py b/lib/python/qmk/cli/generate/rules_mk.py
index d40274ebd342..1d708f371ef3 100755
--- a/lib/python/qmk/cli/generate/rules_mk.py
+++ b/lib/python/qmk/cli/generate/rules_mk.py
@@ -53,7 +53,7 @@ def generate_rules_mk(cli):
     # Determine our keyboard/keymap
     if cli.args.filename:
         user_keymap = parse_configurator_json(cli.args.filename)
-        kb_info_json = user_keymap.get('config', {})
+        kb_info_json = dotty(user_keymap.get('config', {}))
         converter = user_keymap.get('converter', None)
     elif cli.args.keyboard:
         kb_info_json = dotty(info_json(cli.args.keyboard))