Skip to content

Commit

Permalink
Ensure that safe_commands always run (qmk#13199)
Browse files Browse the repository at this point in the history
* ensure that safe_commands always run

* import the config subcommand in bin/qmk
  • Loading branch information
skullydazed authored Jun 14, 2021
1 parent 311f424 commit 6adcd00
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 41 deletions.
1 change: 1 addition & 0 deletions bin/qmk
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
75 changes: 49 additions & 26 deletions lib/python/qmk/cli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,42 @@
'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.
Expand Down Expand Up @@ -113,7 +149,7 @@ def _broken_module_imports(requirements):

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)}')
Expand All @@ -125,7 +161,9 @@ def _broken_module_imports(requirements):
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')
Expand All @@ -148,27 +186,12 @@ def _broken_module_imports(requirements):
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
1 change: 0 additions & 1 deletion lib/python/qmk/cli/chibios/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@
from . import confmigrate
1 change: 0 additions & 1 deletion lib/python/qmk/cli/format/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@
from . import json
9 changes: 0 additions & 9 deletions lib/python/qmk/cli/generate/__init__.py
Original file line number Diff line number Diff line change
@@ -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
2 changes: 0 additions & 2 deletions lib/python/qmk/cli/list/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +0,0 @@
from . import keyboards
from . import keymaps
2 changes: 0 additions & 2 deletions lib/python/qmk/cli/new/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +0,0 @@
from . import keyboard
from . import keymap

0 comments on commit 6adcd00

Please sign in to comment.