summary refs log tree commit diff
diff options
context:
space:
mode:
authorQMK Bot <hello@qmk.fm>2021-06-14 23:52:31 +0000
committerQMK Bot <hello@qmk.fm>2021-06-14 23:52:31 +0000
commita2a524afbb11ae6778bfc68c366db2425efadae9 (patch)
treee3935a33a7d20fa0051639e5a42837ec0deda77d
parent8d0a610f6e9d8c0f2645ec38b7f09ddd53b83f06 (diff)
parent0713797c58376e8237174f8ca83a3fff9d964b9d (diff)
Merge remote-tracking branch 'origin/master' into develop
-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