~ruther/qmk_firmware

0713797c58376e8237174f8ca83a3fff9d964b9d — Zach White 4 years ago ae45fac
Ensure that safe_commands always run (#13199)

* ensure that safe_commands always run

* import the config subcommand in bin/qmk
M bin/qmk => bin/qmk +1 -0
@@ 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

M lib/python/qmk/cli/__init__.py => lib/python/qmk/cli/__init__.py +49 -26
@@ 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

M lib/python/qmk/cli/chibios/__init__.py => lib/python/qmk/cli/chibios/__init__.py +0 -1
@@ 1,1 0,0 @@
from . import confmigrate

M lib/python/qmk/cli/format/__init__.py => lib/python/qmk/cli/format/__init__.py +0 -1
@@ 1,1 0,0 @@
from . import json

M lib/python/qmk/cli/generate/__init__.py => lib/python/qmk/cli/generate/__init__.py +0 -9
@@ 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

M lib/python/qmk/cli/list/__init__.py => lib/python/qmk/cli/list/__init__.py +0 -2
@@ 1,2 0,0 @@
from . import keyboards
from . import keymaps

M lib/python/qmk/cli/new/__init__.py => lib/python/qmk/cli/new/__init__.py +0 -2
@@ 1,2 0,0 @@
from . import keyboard
from . import keymap