summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/labeler.yml1
-rw-r--r--.github/workflows/cli.yml1
-rw-r--r--Makefile6
-rwxr-xr-xbin/qmk58
-rw-r--r--build_keyboard.mk19
-rw-r--r--docs/cli_commands.md48
-rw-r--r--docs/contributing.md2
-rw-r--r--docs/de/cli.md19
-rw-r--r--docs/fr-fr/cli.md19
-rw-r--r--docs/hardware_keyboard_guidelines.md28
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md4
-rw-r--r--keyboards/handwired/symmetric70_proto/post_rules.mk2
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk3
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk3
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk3
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk3
-rw-r--r--keyboards/helix/pico/keymaps/biacco/rules.mk4
-rw-r--r--keyboards/helix/pico/keymaps/default/rules.mk4
-rw-r--r--keyboards/helix/pico/keymaps/mtei/rules.mk4
-rw-r--r--keyboards/helix/pico/post_rules.mk (renamed from keyboards/helix/pico/local_features.mk)4
-rw-r--r--keyboards/helix/pico/rules.mk2
-rw-r--r--keyboards/helix/rev2/keymaps/default/rules.mk4
-rw-r--r--keyboards/helix/rev2/keymaps/five_rows/rules.mk4
-rw-r--r--keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk4
-rw-r--r--keyboards/helix/rev2/keymaps/fraanrosi/rules.mk4
-rw-r--r--keyboards/helix/rev2/keymaps/froggy/rules.mk4
-rw-r--r--keyboards/helix/rev2/keymaps/froggy_106/rules.mk4
-rw-r--r--keyboards/helix/rev2/keymaps/led_test/rules.mk4
-rw-r--r--keyboards/helix/rev2/keymaps/yshrsmz/rules.mk4
-rw-r--r--keyboards/helix/rev2/post_rules.mk3
-rw-r--r--lib/python/qmk/cli/__init__.py1
-rw-r--r--lib/python/qmk/cli/console.py303
-rw-r--r--lib/python/qmk/cli/doctor/check.py1
-rwxr-xr-xlib/python/qmk/cli/format/python.py6
-rw-r--r--lib/python/qmk/cli/lint.py145
-rw-r--r--lib/python/qmk/cli/pytest.py2
-rw-r--r--lib/python/qmk/commands.py2
-rw-r--r--lib/python/qmk/tests/test_cli_commands.py2
-rw-r--r--quantum/quantum.c96
-rw-r--r--shell.nix2
-rw-r--r--tmk_core/common/avr/suspend.c98
-rw-r--r--tmk_core/common/chibios/suspend.c85
-rw-r--r--tmk_core/common/suspend.h2
43 files changed, 267 insertions, 750 deletions
diff --git a/.github/labeler.yml b/.github/labeler.yml
index 53921f7f95..41b2475f67 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -22,7 +22,6 @@ keymap:
via:
- keyboards/**/keymaps/via/*
cli:
- - bin/qmk
- requirements.txt
- lib/python/**/*
python:
diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml
index 7a8dc8540f..3bf9741ac7 100644
--- a/.github/workflows/cli.yml
+++ b/.github/workflows/cli.yml
@@ -8,7 +8,6 @@ on:
pull_request:
paths:
- 'lib/python/**'
- - 'bin/qmk'
- 'requirements.txt'
- '.github/workflows/cli.yml'
diff --git a/Makefile b/Makefile
index bb2201e852..269be720c2 100644
--- a/Makefile
+++ b/Makefile
@@ -30,11 +30,7 @@ endif
endif
# Determine which qmk cli to use
-ifeq (,$(shell which qmk))
- QMK_BIN = bin/qmk
-else
- QMK_BIN = qmk
-endif
+QMK_BIN := qmk
# avoid 'Entering|Leaving directory' messages
MAKEFLAGS += --no-print-directory
diff --git a/bin/qmk b/bin/qmk
deleted file mode 100755
index 617f992826..0000000000
--- a/bin/qmk
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env python3
-"""CLI wrapper for running QMK commands.
-"""
-import os
-import sys
-from pathlib import Path
-
-# Add the QMK python libs to our path
-script_dir = Path(os.path.realpath(__file__)).parent
-qmk_dir = script_dir.parent
-python_lib_dir = Path(qmk_dir / 'lib' / 'python').resolve()
-sys.path.append(str(python_lib_dir))
-
-# Setup the CLI
-import milc # noqa
-
-milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}'
-
-
-@milc.cli.entrypoint('QMK Helper Script')
-def qmk_main(cli):
- """The function that gets run when no subcommand is provided.
- """
- cli.print_help()
-
-
-def main():
- """Setup our environment and then call the CLI entrypoint.
- """
- # Change to the root of our checkout
- os.environ['ORIG_CWD'] = os.getcwd()
- os.environ['DEPRECATED_BIN_QMK'] = '1'
- os.chdir(qmk_dir)
-
- print('Warning: The bin/qmk script is being deprecated. Please install the QMK CLI: python3 -m pip install qmk', file=sys.stderr)
-
- # Import the subcommands
- import milc.subcommand.config # noqa
- import qmk.cli # noqa
-
- # Execute
- return_code = milc.cli()
-
- if return_code is False:
- exit(1)
-
- elif return_code is not True and isinstance(return_code, int):
- if return_code < 0 or return_code > 255:
- milc.cli.log.error('Invalid return_code: %d', return_code)
- exit(255)
-
- exit(return_code)
-
- exit(0)
-
-
-if __name__ == '__main__':
- main()
diff --git a/build_keyboard.mk b/build_keyboard.mk
index 37fa6852f8..420643c3e7 100644
--- a/build_keyboard.mk
+++ b/build_keyboard.mk
@@ -115,6 +115,7 @@ include $(INFO_RULES_MK)
# Check for keymap.json first, so we can regenerate keymap.c
include build_json.mk
+# Pull in keymap level rules.mk
ifeq ("$(wildcard $(KEYMAP_PATH))", "")
# Look through the possible keymap folders until we find a matching keymap.c
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
@@ -345,6 +346,7 @@ ifeq ("$(USER_NAME)","")
endif
USER_PATH := users/$(USER_NAME)
+# Pull in user level rules.mk
-include $(USER_PATH)/rules.mk
ifneq ("$(wildcard $(USER_PATH)/config.h)","")
CONFIG_H += $(USER_PATH)/config.h
@@ -356,6 +358,23 @@ endif
# Disable features that a keyboard doesn't support
-include disable_features.mk
+# Pull in post_rules.mk files from all our subfolders
+ifneq ("$(wildcard $(KEYBOARD_PATH_1)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_1)/post_rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_2)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_2)/post_rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_3)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_3)/post_rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_4)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_4)/post_rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_5)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_5)/post_rules.mk
+endif
+
ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
CONFIG_H += $(KEYMAP_PATH)/config.h
endif
diff --git a/docs/cli_commands.md b/docs/cli_commands.md
index 8fa7ad41dc..06568afb46 100644
--- a/docs/cli_commands.md
+++ b/docs/cli_commands.md
@@ -118,54 +118,6 @@ This command lets you configure the behavior of QMK. For the full `qmk config` d
qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
```
-## `qmk console`
-
-This command lets you connect to keyboard consoles to get debugging messages. It only works if your keyboard firmware has been compiled with `CONSOLE_ENABLE=yes`.
-
-**Usage**:
-
-```
-qmk console [-d <pid>:<vid>[:<index>]] [-l] [-n] [-t] [-w <seconds>]
-```
-
-**Examples**:
-
-Connect to all available keyboards and show their console messages:
-
-```
-qmk console
-```
-
-List all devices:
-
-```
-qmk console -l
-```
-
-Show only messages from clueboard/66/rev3 keyboards:
-
-```
-qmk console -d C1ED:2370
-```
-
-Show only messages from the second clueboard/66/rev3:
-
-```
-qmk console -d C1ED:2370:2
-```
-
-Show timestamps and VID:PID instead of names:
-
-```
-qmk console -n -t
-```
-
-Disable bootloader messages:
-
-```
-qmk console --no-bootloaders
-```
-
## `qmk doctor`
This command examines your environment and alerts you to potential build or flash problems. It can fix many of them if you want it to.
diff --git a/docs/contributing.md b/docs/contributing.md
index 1d68d22d9f..eb033d167f 100644
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -105,7 +105,7 @@ enum my_keycodes {
Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the `qmk_firmware/` folder:
- ./bin/qmk docs
+ qmk docs
or if you only have Python 3 installed:
diff --git a/docs/de/cli.md b/docs/de/cli.md
index 7dc02d505b..259aeecf75 100644
--- a/docs/de/cli.md
+++ b/docs/de/cli.md
@@ -51,25 +51,6 @@ Wir suchen nach Freiwilligen, die ein `qmk`-Package für weitere Betriebssysteme
* Installiere mit einem [virtualenv](https://virtualenv.pypa.io/en/latest/).
* Weise den User an, die Umgebungs-Variable `QMK_HOME` zu setzen, um die Firmware-Quelle anders einzustellen als `~/qmk_firmware`.
-# Lokale CLI
-
-Wenn Du die globale CLI nicht verwenden möchtest, beinhaltet `qmk_firmware` auch eine lokale CLI. Du kannst sie hier finden: `qmk_firmware/bin/qmk`. Du kannst den `qmk`-Befehl aus irgendeinem Datei-Verzeichnis ausführen und es wird immer auf dieser Kopie von `qmk_firmware` arbeiten.
-
-**Beispiel**:
-
-```
-$ ~/qmk_firmware/bin/qmk hello
-Ψ Hello, World!
-```
-
-## Einschränkungen der lokalen CLI
-
-Hier ein Vergleich mit der globalen CLI:
-
-* Die lokale CLI unterstützt kein `qmk setup` oder `qmk clone`.
-* Die lokale CLI arbeitet immer innerhalb der selben `qmk_firmware`-Verzeichnisstruktur, auch wenn Du mehrere Repositories geklont hast.
-* Die lokale CLI läuft nicht in einer virtualenv. Daher ist es möglich, dass Abhängigkeiten (dependencies) miteinander in Konflikt kommen/stehen.
-
# CLI-Befehle
## `qmk compile`
diff --git a/docs/fr-fr/cli.md b/docs/fr-fr/cli.md
index bfa060f2ad..917a9315bc 100644
--- a/docs/fr-fr/cli.md
+++ b/docs/fr-fr/cli.md
@@ -48,25 +48,6 @@ Nous recherchons des gens pour créer et maintenir un paquet `qmk` pour plus de
* Installez en utilisant un virtualenv
* Expliquez à l'utilisateur de définir la variable d'environnement `QMK_Home` pour "check out" les sources du firmware à un autre endroit que `~/qmk_firmware`.
-# CLI locale
-
-Si vous ne voulez pas utiliser la CLI globale, il y a une CLI locale empaquetée avec `qmk_firmware`. Vous pouvez le trouver dans `qmk_firmware/bin/qmk`. Vous pouvez lancer la commande `qmk` depuis n'importe quel répertoire et elle fonctionnera toujours sur cette copie de `qmk_firmware`.
-
-**Exemple**:
-
-```
-$ ~/qmk_firmware/bin/qmk hello
-Ψ Hello, World!
-```
-
-## Limitations de la CLI locale
-
-Il y a quelques limitations à la CLI locale comparé à la globale:
-
-* La CLI locale ne supporte pas `qmk setup` ou `qmk clone`
-* La CLI locale n'opère pas sur le même arbre `qmk_firmware`, même si vous avez plusieurs dépôts clonés.
-* La CLI locale ne s'exécute pas dans un virtualenv, donc il y a des risques que des dépendances seront en conflit
-
# Les commandes CLI
## `qmk compile`
diff --git a/docs/hardware_keyboard_guidelines.md b/docs/hardware_keyboard_guidelines.md
index 7630b44e0c..17be7ee6aa 100644
--- a/docs/hardware_keyboard_guidelines.md
+++ b/docs/hardware_keyboard_guidelines.md
@@ -144,10 +144,38 @@ The `rules.mk` file can also be placed in a sub-folder, and its reading order is
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/rules.mk`
* `keyboards/top_folder/keymaps/a_keymap/rules.mk`
* `users/a_user_folder/rules.mk`
+ * `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/post_rules.mk`
+ * `keyboards/top_folder/sub_1/sub_2/sub_3/post_rules.mk`
+ * `keyboards/top_folder/sub_1/sub_2/post_rules.mk`
+ * `keyboards/top_folder/sub_1/post_rules.mk`
+* `keyboards/top_folder/post_rules.mk`
* `common_features.mk`
Many of the settings written in the `rules.mk` file are interpreted by `common_features.mk`, which sets the necessary source files and compiler options.
+The `post_rules.mk` file can interpret `features` of a keyboard-level before `common_features.mk`. For example, when your designed keyboard has the option to implement backlighting or underglow using rgblight.c, writing the following in the `post_rules.mk` makes it easier for the user to configure the `rules.mk`.
+
+* `keyboards/top_folder/keymaps/a_keymap/rules.mk`
+ ```makefile
+ # Please set the following according to the selection of the hardware implementation option.
+ RGBLED_OPTION_TYPE = backlight ## none, backlight or underglow
+ ```
+* `keyboards/top_folder/post_rules.mk`
+ ```makefile
+ ifeq ($(filter $(strip $(RGBLED_OPTION_TYPE))x, nonex backlightx underglowx x),)
+ $(error unknown RGBLED_OPTION_TYPE value "$(RGBLED_OPTION_TYPE)")
+ endif
+
+ ifeq ($(strip $(RGBLED_OPTION_TYPE)),backlight)
+ RGBLIGHT_ENABLE = yes
+ OPT_DEFS += -DRGBLED_NUM=30
+ endif
+ ifeq ($(strip $(RGBLED_OPTION_TYPE)),underglow)
+ RGBLIGHT_ENABLE = yes
+ OPT_DEFS += -DRGBLED_NUM=6
+ endif
+ ```
+
?> See `build_keyboard.mk` and `common_features.mk` for more details.
### `<keyboard_name.c>`
diff --git a/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md b/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md
index d872587317..9de86be2d1 100644
--- a/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md
+++ b/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md
@@ -3,13 +3,13 @@
Run commands in the root directory of this repository.
```
-./bin/qmk compile && sudo dfu-programmer atmega32u4 erase && sudo dfu-programmer atmega32u4 flash ./dztech_dz65rgb_v2_jumper149.hex && sudo dfu-programmer atmega32u4 reset
+qmk compile && sudo dfu-programmer atmega32u4 erase && sudo dfu-programmer atmega32u4 flash ./dztech_dz65rgb_v2_jumper149.hex && sudo dfu-programmer atmega32u4 reset
```
## build
```
-./bin/qmk compile
+qmk compile
```
## flash
diff --git a/keyboards/handwired/symmetric70_proto/post_rules.mk b/keyboards/handwired/symmetric70_proto/post_rules.mk
new file mode 100644
index 0000000000..e2d35d60ab
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/post_rules.mk
@@ -0,0 +1,2 @@
+KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))local_features.mk
+include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk b/keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk
index de489fcabd..fbc1c3bb38 100644
--- a/keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk
+++ b/keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk
@@ -1,6 +1,3 @@
CUSTOM_MATRIX = yes
SRC += matrix_common.c
SRC += matrix_fast/matrix.c
-
-KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))../../local_features.mk
-include $(KEYBOARD_LOCAL_FEATURES_MK)
diff --git a/keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk b/keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk
index 0b2b707ef8..73192f4ff7 100644
--- a/keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk
+++ b/keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk
@@ -1,6 +1,3 @@
CUSTOM_MATRIX = yes
SRC += matrix_common.c
SRC += matrix_debug/matrix.c
-
-KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))../../local_features.mk
-include $(KEYBOARD_LOCAL_FEATURES_MK)
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk b/keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk
index de489fcabd..fbc1c3bb38 100644
--- a/keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk
+++ b/keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk
@@ -1,6 +1,3 @@
CUSTOM_MATRIX = yes
SRC += matrix_common.c
SRC += matrix_fast/matrix.c
-
-KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))../../local_features.mk
-include $(KEYBOARD_LOCAL_FEATURES_MK)
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk b/keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk
index 0b2b707ef8..73192f4ff7 100644
--- a/keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk
+++ b/keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk
@@ -1,6 +1,3 @@
CUSTOM_MATRIX = yes
SRC += matrix_common.c
SRC += matrix_debug/matrix.c
-
-KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))../../local_features.mk
-include $(KEYBOARD_LOCAL_FEATURES_MK)
diff --git a/keyboards/helix/pico/keymaps/biacco/rules.mk b/keyboards/helix/pico/keymaps/biacco/rules.mk
index 37e49977c5..993ade2673 100644
--- a/keyboards/helix/pico/keymaps/biacco/rules.mk
+++ b/keyboards/helix/pico/keymaps/biacco/rules.mk
@@ -18,7 +18,3 @@ LTO_ENABLE = no # if firmware size over limit, try this option
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
LED_ANIMATIONS = no # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/pico/keymaps/default/rules.mk b/keyboards/helix/pico/keymaps/default/rules.mk
index 8f198e3803..8977897f9b 100644
--- a/keyboards/helix/pico/keymaps/default/rules.mk
+++ b/keyboards/helix/pico/keymaps/default/rules.mk
@@ -18,7 +18,3 @@ LTO_ENABLE = no # if firmware size over limit, try this option
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
# LED_ANIMATIONS = yes # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/pico/keymaps/mtei/rules.mk b/keyboards/helix/pico/keymaps/mtei/rules.mk
index 165233f5fe..05a60f67d5 100644
--- a/keyboards/helix/pico/keymaps/mtei/rules.mk
+++ b/keyboards/helix/pico/keymaps/mtei/rules.mk
@@ -18,7 +18,3 @@ LTO_ENABLE = no # if firmware size over limit, try this option
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
# LED_ANIMATIONS = yes # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/pico/local_features.mk b/keyboards/helix/pico/post_rules.mk
index be5c739f97..38573d75a5 100644
--- a/keyboards/helix/pico/local_features.mk
+++ b/keyboards/helix/pico/post_rules.mk
@@ -1,12 +1,10 @@
#
-# local_features.mk contains post-processing rules for the Helix keyboard.
+# post_rules.mk contains post-processing rules for the Helix keyboard.
#
# Post-processing rules convert keyboard-specific shortcuts (that represent
# combinations of standard options) into QMK standard options.
#
-KEYBOARD_LOCAL_FEATURES_MK :=
-
define HELIX_CUSTOMISE_MSG
$(info Helix Spacific Build Options)
$(info - OLED_ENABLE = $(OLED_ENABLE))
diff --git a/keyboards/helix/pico/rules.mk b/keyboards/helix/pico/rules.mk
index cb9a70e00e..12caec37ef 100644
--- a/keyboards/helix/pico/rules.mk
+++ b/keyboards/helix/pico/rules.mk
@@ -1,5 +1,3 @@
-KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))local_features.mk
-
# Helix Spacific Build Options default values
OLED_ENABLE = no # OLED_ENABLE
LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
diff --git a/keyboards/helix/rev2/keymaps/default/rules.mk b/keyboards/helix/rev2/keymaps/default/rules.mk
index c16f3e2b87..58b43a6bda 100644
--- a/keyboards/helix/rev2/keymaps/default/rules.mk
+++ b/keyboards/helix/rev2/keymaps/default/rules.mk
@@ -29,7 +29,3 @@ OLED_SELECT = core
ifeq ($(strip $(OLED_ENABLE)), yes)
SRC += oled_display.c
endif
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/five_rows/rules.mk b/keyboards/helix/rev2/keymaps/five_rows/rules.mk
index e59ce73326..5f7e4668fc 100644
--- a/keyboards/helix/rev2/keymaps/five_rows/rules.mk
+++ b/keyboards/helix/rev2/keymaps/five_rows/rules.mk
@@ -95,7 +95,3 @@ endif
ifeq ($(strip $(OLED_ENABLE)), yes)
SRC += oled_display.c
endif
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk b/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
index d44382f86a..7c4a7b6045 100644
--- a/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
+++ b/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
@@ -17,7 +17,3 @@ HELIX_ROWS = 5 # Helix Rows is 4 or 5
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
# LED_ANIMATIONS = yes # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/fraanrosi/rules.mk b/keyboards/helix/rev2/keymaps/fraanrosi/rules.mk
index 462a83f6e7..98585b0d60 100644
--- a/keyboards/helix/rev2/keymaps/fraanrosi/rules.mk
+++ b/keyboards/helix/rev2/keymaps/fraanrosi/rules.mk
@@ -22,7 +22,3 @@ LED_ANIMATIONS = yes # LED animations
LED_BACK_ENABLE = no
LED_UNDERGLOW_ENABLE = yes
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/froggy/rules.mk b/keyboards/helix/rev2/keymaps/froggy/rules.mk
index 5a0fd9a2b1..2d01c43fe7 100644
--- a/keyboards/helix/rev2/keymaps/froggy/rules.mk
+++ b/keyboards/helix/rev2/keymaps/froggy/rules.mk
@@ -17,7 +17,3 @@ LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.)
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
LED_ANIMATIONS = yes # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/froggy_106/rules.mk b/keyboards/helix/rev2/keymaps/froggy_106/rules.mk
index 5a0fd9a2b1..2d01c43fe7 100644
--- a/keyboards/helix/rev2/keymaps/froggy_106/rules.mk
+++ b/keyboards/helix/rev2/keymaps/froggy_106/rules.mk
@@ -17,7 +17,3 @@ LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.)
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
LED_ANIMATIONS = yes # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/led_test/rules.mk b/keyboards/helix/rev2/keymaps/led_test/rules.mk
index 8b590eee86..3ab27acfc2 100644
--- a/keyboards/helix/rev2/keymaps/led_test/rules.mk
+++ b/keyboards/helix/rev2/keymaps/led_test/rules.mk
@@ -23,7 +23,3 @@ ifeq ($(strip $(OLED_ENABLE)), yes)
SRC += oled_display.c
endif
SRC += led_test_init.c
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/yshrsmz/rules.mk b/keyboards/helix/rev2/keymaps/yshrsmz/rules.mk
index 83dcc9b3b8..cd436cd9a3 100644
--- a/keyboards/helix/rev2/keymaps/yshrsmz/rules.mk
+++ b/keyboards/helix/rev2/keymaps/yshrsmz/rules.mk
@@ -17,7 +17,3 @@ OLED_ENABLE = yes # OLED_ENABLE
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
LED_ANIMATIONS = no # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/post_rules.mk b/keyboards/helix/rev2/post_rules.mk
new file mode 100644
index 0000000000..4c671d4515
--- /dev/null
+++ b/keyboards/helix/rev2/post_rules.mk
@@ -0,0 +1,3 @@
+ifneq ($(strip $(KEYBOARD_LOCAL_FEATURES_MK)),)
+ include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
+endif
diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py
index f45e33240c..292dcbe812 100644
--- a/lib/python/qmk/cli/__init__.py
+++ b/lib/python/qmk/cli/__init__.py
@@ -35,7 +35,6 @@ subcommands = [
'qmk.cli.chibios.confmigrate',
'qmk.cli.clean',
'qmk.cli.compile',
- 'qmk.cli.console',