summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZach White <skullydazed@gmail.com>2021-06-14 16:51:58 -0700
committerGitHub <noreply@github.com>2021-06-14 16:51:58 -0700
commit0713797c58376e8237174f8ca83a3fff9d964b9d (patch)
treee3e90c08dba4a35dbcf521f5d19a3ca4e711af34
parentae45faca2660c41aab5eea957bc979f4c385bde5 (diff)
Ensure that safe_commands always run (#13199)
* ensure that safe_commands always run * import the config subcommand in bin/qmk
-rwxr-xr-xbin/qmk1
-rw-r--r--lib/python/qmk/cli/__init__.py75
-rw-r--r--lib/python/qmk/cli/chibios/__init__.py1
-rw-r--r--lib/python/qmk/cli/format/__init__.py1
-rw-r--r--lib/python/qmk/cli/generate/__init__.py9
-rw-r--r--lib/python/qmk/cli/list/__init__.py2
-rw-r--r--lib/python/qmk/cli/new/__init__.py2
7 files changed, 50 insertions, 41 deletions
diff --git a/bin/qmk b/bin/qmk
index a6e8ce08da..617f992826 100755
--- a/bin/qmk
+++ b/bin/qmk
@@ -35,6 +35,7 @@ def main():
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
diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py
index 48812ae4ba..32da1a9b52 100644
--- a/lib/python/qmk/cli/__init__.py
+++ b/lib/python/qmk/cli/__init__.py
@@ -26,6 +26,42 @@ safe_commands = [
'setup',
]
+subcommands = [
+ 'qmk.cli.bux',
+ 'qmk.cli.c2json',
+ 'qmk.cli.cformat',
+ 'qmk.cli.chibios.confmigrate',
+ 'qmk.cli.clean',
+ 'qmk.cli.compile',
+ 'qmk.cli.console',
+ 'qmk.cli.docs',
+ 'qmk.cli.doctor',
+ 'qmk.cli.fileformat',
+ 'qmk.cli.flash',
+ 'qmk.cli.format.json',
+ 'qmk.cli.generate.api',
+ 'qmk.cli.generate.config_h',
+ 'qmk.cli.generate.dfu_header',
+ 'qmk.cli.generate.docs',
+ 'qmk.cli.generate.info_json',
+ 'qmk.cli.generate.keyboard_h',
+ 'qmk.cli.generate.layouts',
+ 'qmk.cli.generate.rgb_breathe_table',
+ 'qmk.cli.generate.rules_mk',
+ 'qmk.cli.hello',
+ 'qmk.cli.info',
+ 'qmk.cli.json2c',
+ 'qmk.cli.lint',
+ 'qmk.cli.list.keyboards',
+ 'qmk.cli.list.keymaps',
+ 'qmk.cli.kle2json',
+ 'qmk.cli.multibuild',
+ 'qmk.cli.new.keyboard',
+ 'qmk.cli.new.keymap',
+ 'qmk.cli.pyformat',
+ 'qmk.cli.pytest',
+]
+
def _run_cmd(*command):
"""Run a command in a subshell.
@@ -113,7 +149,7 @@ if sys.version_info[0] != 3 or sys.version_info[1] < 7:
milc_version = __VERSION__.split('.')
-if int(milc_version[0]) < 2 and int(milc_version[1]) < 3:
+if int(milc_version[0]) < 2 and int(milc_version[1]) < 4:
requirements = Path('requirements.txt').resolve()
print(f'Your MILC library is too old! Please upgrade: python3 -m pip install -U -r {str(requirements)}')
@@ -125,7 +161,9 @@ args = sys.argv[1:]
while args and args[0][0] == '-':
del args[0]
-if not args or args[0] not in safe_commands:
+safe_command = args and args[0] in safe_commands
+
+if not safe_command:
if _broken_module_imports('requirements.txt'):
if yesno('Would you like to install the required Python modules?'):
_run_cmd(sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt')
@@ -148,27 +186,12 @@ if not args or args[0] not in safe_commands:
exit(1)
# Import our subcommands
-from . import bux # noqa
-from . import c2json # noqa
-from . import cformat # noqa
-from . import chibios # noqa
-from . import clean # noqa
-from . import compile # noqa
-from milc.subcommand import config # noqa
-from . import console # noqa
-from . import docs # noqa
-from . import doctor # noqa
-from . import fileformat # noqa
-from . import flash # noqa
-from . import format # noqa
-from . import generate # noqa
-from . import hello # noqa
-from . import info # noqa
-from . import json2c # noqa
-from . import lint # noqa
-from . import list # noqa
-from . import kle2json # noqa
-from . import multibuild # noqa
-from . import new # noqa
-from . import pyformat # noqa
-from . import pytest # noqa
+for subcommand in subcommands:
+ try:
+ __import__(subcommand)
+
+ except ModuleNotFoundError as e:
+ if safe_command:
+ print(f'Warning: Could not import {subcommand}: {e.__class__.__name__}, {e}')
+ else:
+ raise
diff --git a/lib/python/qmk/cli/chibios/__init__.py b/lib/python/qmk/cli/chibios/__init__.py
index 4301837def..e69de29bb2 100644
--- a/lib/python/qmk/cli/chibios/__init__.py
+++ b/lib/python/qmk/cli/chibios/__init__.py
@@ -1 +0,0 @@
-from . import confmigrate
diff --git a/lib/python/qmk/cli/format/__init__.py b/lib/python/qmk/cli/format/__init__.py
index 741ec778b1..e69de29bb2 100644
--- a/lib/python/qmk/cli/format/__init__.py
+++ b/lib/python/qmk/cli/format/__init__.py
@@ -1 +0,0 @@
-from . import json
diff --git a/lib/python/qmk/cli/generate/__init__.py b/lib/python/qmk/cli/generate/__init__.py
index 0efca0022d..e69de29bb2 100644
--- a/lib/python/qmk/cli/generate/__init__.py
+++ b/lib/python/qmk/cli/generate/__init__.py
@@ -1,9 +0,0 @@
-from . import api
-from . import config_h
-from . import dfu_header
-from . import docs
-from . import info_json
-from . import keyboard_h
-from . import layouts
-from . import rgb_breathe_table
-from . import rules_mk
diff --git a/lib/python/qmk/cli/list/__init__.py b/lib/python/qmk/cli/list/__init__.py
index d83cd20b5b..e69de29bb2 100644
--- a/lib/python/qmk/cli/list/__init__.py
+++ b/lib/python/qmk/cli/list/__init__.py
@@ -1,2 +0,0 @@
-from . import keyboards
-from . import keymaps
diff --git a/lib/python/qmk/cli/new/__init__.py b/lib/python/qmk/cli/new/__init__.py
index fe5d6fe483..e69de29bb2 100644
--- a/lib/python/qmk/cli/new/__init__.py
+++ b/lib/python/qmk/cli/new/__init__.py
@@ -1,2 +0,0 @@
-from . import keyboard
-from . import keymap