Ensure that safe_commands always run (#13199)
* ensure that safe_commands always run * import the config subcommand in bin/qmk
This commit is contained in:
		
							parent
							
								
									ae45faca26
								
							
						
					
					
						commit
						0713797c58
					
				
					 7 changed files with 50 additions and 41 deletions
				
			
		
							
								
								
									
										1
									
								
								bin/qmk
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
from . import confmigrate
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
from . import json
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -1,2 +0,0 @@
 | 
			
		|||
from . import keyboards
 | 
			
		||||
from . import keymaps
 | 
			
		||||
| 
						 | 
				
			
			@ -1,2 +0,0 @@
 | 
			
		|||
from . import keyboard
 | 
			
		||||
from . import keymap
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue