diff options
author | Zach White <skullydazed@gmail.com> | 2021-06-14 16:51:58 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-14 16:51:58 -0700 |
commit | 0713797c58376e8237174f8ca83a3fff9d964b9d (patch) | |
tree | e3e90c08dba4a35dbcf521f5d19a3ca4e711af34 | |
parent | ae45faca2660c41aab5eea957bc979f4c385bde5 (diff) |
Ensure that safe_commands always run (#13199)
* ensure that safe_commands always run
* import the config subcommand in bin/qmk
-rwxr-xr-x | bin/qmk | 1 | ||||
-rw-r--r-- | lib/python/qmk/cli/__init__.py | 75 | ||||
-rw-r--r-- | lib/python/qmk/cli/chibios/__init__.py | 1 | ||||
-rw-r--r-- | lib/python/qmk/cli/format/__init__.py | 1 | ||||
-rw-r--r-- | lib/python/qmk/cli/generate/__init__.py | 9 | ||||
-rw-r--r-- | lib/python/qmk/cli/list/__init__.py | 2 | ||||
-rw-r--r-- | lib/python/qmk/cli/new/__init__.py | 2 |
7 files changed, 50 insertions, 41 deletions
@@ -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 |