|
|
|
@ -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 |
|
|
|
|