diff options
Diffstat (limited to 'lib/python/qmk/cli')
-rw-r--r-- | lib/python/qmk/cli/__init__.py | 7 | ||||
-rw-r--r-- | lib/python/qmk/cli/cformat.py | 7 | ||||
-rw-r--r-- | lib/python/qmk/cli/docs.py | 2 | ||||
-rwxr-xr-x | lib/python/qmk/cli/doctor.py | 13 | ||||
-rwxr-xr-x | lib/python/qmk/cli/hello.py | 2 | ||||
-rwxr-xr-x | lib/python/qmk/cli/json2c.py | 8 | ||||
-rwxr-xr-x | lib/python/qmk/cli/kle2json.py | 10 | ||||
-rwxr-xr-x | lib/python/qmk/cli/new/keymap.py | 2 | ||||
-rwxr-xr-x | lib/python/qmk/cli/pyformat.py | 2 | ||||
-rw-r--r-- | lib/python/qmk/cli/pytest.py | 2 |
10 files changed, 27 insertions, 28 deletions
diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py index eb524217cd..394a1353bc 100644 --- a/lib/python/qmk/cli/__init__.py +++ b/lib/python/qmk/cli/__init__.py @@ -2,6 +2,8 @@ We list each subcommand here explicitly because all the reliable ways of searching for modules are slow and delay startup. """ +import sys + from milc import cli from . import cformat @@ -19,5 +21,6 @@ from . import new from . import pyformat from . import pytest -if not hasattr(cli, 'config_source'): - cli.log.warning("Your QMK CLI is out of date. Please upgrade with `pip3 install --upgrade qmk` or by using your package manager.") +if sys.version_info[0] != 3 or sys.version_info[1] < 6: + cli.log.error('Your Python is too old! Please upgrade to Python 3.6 or later.') + exit(127) diff --git a/lib/python/qmk/cli/cformat.py b/lib/python/qmk/cli/cformat.py index 7e3a91dcf0..0cd8b6192a 100644 --- a/lib/python/qmk/cli/cformat.py +++ b/lib/python/qmk/cli/cformat.py @@ -22,9 +22,8 @@ def cformat_run(files, all_files): cli.log.warn('No changes detected. Use "qmk cformat -a" to format all files') return False if files and all_files: - cli.log.warning('Filenames passed with -a, only formatting: %s', ','.join(cli.args.files)) - # 3.6+: Can remove the str casting, python will cast implicitly - subprocess.run(clang_format + [str(file) for file in files], check=True) + cli.log.warning('Filenames passed with -a, only formatting: %s', ','.join(files)) + subprocess.run(clang_format + [file for file in files], check=True) cli.log.info('Successfully formatted the C code.') except subprocess.CalledProcessError: @@ -35,7 +34,7 @@ def cformat_run(files, all_files): @cli.argument('-a', '--all-files', arg_only=True, action='store_true', help='Format all core files.') @cli.argument('-b', '--base-branch', default='origin/master', help='Branch to compare to diffs to.') @cli.argument('files', nargs='*', arg_only=True, help='Filename(s) to format.') -@cli.subcommand("Format C code according to QMK's style.") +@cli.subcommand("Format C code according to QMK's style.", hidden=False if cli.config.user.developer else True) def cformat(cli): """Format C code according to QMK's style. """ diff --git a/lib/python/qmk/cli/docs.py b/lib/python/qmk/cli/docs.py index 163c8b8015..5816106504 100644 --- a/lib/python/qmk/cli/docs.py +++ b/lib/python/qmk/cli/docs.py @@ -7,7 +7,7 @@ from milc import cli @cli.argument('-p', '--port', default=8936, type=int, help='Port number to use.') -@cli.subcommand('Run a local webserver for QMK documentation.') +@cli.subcommand('Run a local webserver for QMK documentation.', hidden=False if cli.config.user.developer else True) def docs(cli): """Spin up a local HTTPServer instance for the QMK docs. """ diff --git a/lib/python/qmk/cli/doctor.py b/lib/python/qmk/cli/doctor.py index 3e6f6fe54e..3c46248372 100755 --- a/lib/python/qmk/cli/doctor.py +++ b/lib/python/qmk/cli/doctor.py @@ -135,16 +135,15 @@ def check_udev_rules(): } if udev_dir.exists(): - udev_rules = [str(rule_file) for rule_file in udev_dir.glob('*.rules')] + udev_rules = [rule_file for rule_file in udev_dir.glob('*.rules')] current_rules = set() # Collect all rules from the config files for rule_file in udev_rules: - with open(rule_file, "r") as fd: - for line in fd.readlines(): - line = line.strip() - if not line.startswith("#") and len(line): - current_rules.add(line) + for line in rule_file.read_text().split('\n'): + line = line.strip() + if not line.startswith("#") and len(line): + current_rules.add(line) # Check if the desired rules are among the currently present rules for bootloader, rules in desired_rules.items(): @@ -191,7 +190,7 @@ def is_executable(command): cli.log.debug('Found {fg_cyan}%s', command) return True - cli.log.error("{fg_red}Can't run `%s %s`", (command, version_arg)) + cli.log.error("{fg_red}Can't run `%s %s`", command, version_arg) return False diff --git a/lib/python/qmk/cli/hello.py b/lib/python/qmk/cli/hello.py index bee28c3013..5119188a07 100755 --- a/lib/python/qmk/cli/hello.py +++ b/lib/python/qmk/cli/hello.py @@ -6,7 +6,7 @@ from milc import cli @cli.argument('-n', '--name', default='World', help='Name to greet.') -@cli.subcommand('QMK Hello World.') +@cli.subcommand('QMK Hello World.', hidden=False if cli.config.user.developer else True) def hello(cli): """Log a friendly greeting. """ diff --git a/lib/python/qmk/cli/json2c.py b/lib/python/qmk/cli/json2c.py index 46c4d04bb7..5218405070 100755 --- a/lib/python/qmk/cli/json2c.py +++ b/lib/python/qmk/cli/json2c.py @@ -10,29 +10,27 @@ import qmk.path @cli.argument('-o', '--output', arg_only=True, type=qmk.path.normpath, help='File to write to') @cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") -@cli.argument('filename', arg_only=True, help='Configurator JSON file') +@cli.argument('filename', type=qmk.path.normpath, arg_only=True, help='Configurator JSON file') @cli.subcommand('Creates a keymap.c from a QMK Configurator export.') def json2c(cli): """Generate a keymap.c from a configurator export. This command uses the `qmk.keymap` module to generate a keymap.c from a configurator export. The generated keymap is written to stdout, or to a file if -o is provided. """ - cli.args.filename = qmk.path.normpath(cli.args.filename) - # Error checking if not cli.args.filename.exists(): cli.log.error('JSON file does not exist!') cli.print_usage() exit(1) - if str(cli.args.filename) == '-': + if cli.args.filename.name == '-': # TODO(skullydazed/anyone): Read file contents from STDIN cli.log.error('Reading from STDIN is not (yet) supported.') cli.print_usage() exit(1) # Environment processing - if cli.args.output == ('-'): + if cli.args.output.name == ('-'): cli.args.output = None # Parse the configurator json diff --git a/lib/python/qmk/cli/kle2json.py b/lib/python/qmk/cli/kle2json.py index 00f63d3622..5268462f92 100755 --- a/lib/python/qmk/cli/kle2json.py +++ b/lib/python/qmk/cli/kle2json.py @@ -26,7 +26,7 @@ class CustomJSONEncoder(json.JSONEncoder): @cli.argument('filename', help='The KLE raw txt to convert') @cli.argument('-f', '--force', action='store_true', help='Flag to overwrite current info.json') -@cli.subcommand('Convert a KLE layout to a Configurator JSON') +@cli.subcommand('Convert a KLE layout to a Configurator JSON', hidden=False if cli.config.user.developer else True) def kle2json(cli): """Convert a KLE layout to QMK's layout format. """ # If filename is a path @@ -37,12 +37,12 @@ def kle2json(cli): file_path = Path(os.environ['ORIG_CWD'], cli.args.filename) # Check for valid file_path for more graceful failure if not file_path.exists(): - return cli.log.error('File {fg_cyan}%s{style_reset_all} was not found.', str(file_path)) + return cli.log.error('File {fg_cyan}%s{style_reset_all} was not found.', file_path) out_path = file_path.parent raw_code = file_path.open().read() # Check if info.json exists, allow overwrite with force if Path(out_path, "info.json").exists() and not cli.args.force: - cli.log.error('File {fg_cyan}%s/info.json{style_reset_all} already exists, use -f or --force to overwrite.', str(out_path)) + cli.log.error('File {fg_cyan}%s/info.json{style_reset_all} already exists, use -f or --force to overwrite.', out_path) return False try: # Convert KLE raw to x/y coordinates (using kle2xy package from skullydazed) @@ -69,7 +69,7 @@ def kle2json(cli): # Replace layout in keyboard json keyboard = keyboard.replace('"LAYOUT_JSON_HERE"', layout) # Write our info.json - file = open(str(out_path) + "/info.json", "w") + file = open(out_path + "/info.json", "w") file.write(keyboard) file.close() - cli.log.info('Wrote out {fg_cyan}%s/info.json', str(out_path)) + cli.log.info('Wrote out {fg_cyan}%s/info.json', out_path) diff --git a/lib/python/qmk/cli/new/keymap.py b/lib/python/qmk/cli/new/keymap.py index 5ae2628565..474fe7974f 100755 --- a/lib/python/qmk/cli/new/keymap.py +++ b/lib/python/qmk/cli/new/keymap.py @@ -40,7 +40,7 @@ def new_keymap(cli): exit(1) # create user directory with default keymap files - shutil.copytree(str(keymap_path_default), str(keymap_path_new), symlinks=True) + shutil.copytree(keymap_path_default, keymap_path_new, symlinks=True) # end message to user cli.log.info("%s keymap directory created in: %s", keymap, keymap_path_new) diff --git a/lib/python/qmk/cli/pyformat.py b/lib/python/qmk/cli/pyformat.py index a53ba40c0a..1464443804 100755 --- a/lib/python/qmk/cli/pyformat.py +++ b/lib/python/qmk/cli/pyformat.py @@ -5,7 +5,7 @@ from milc import cli import subprocess -@cli.subcommand("Format python code according to QMK's style.") +@cli.subcommand("Format python code according to QMK's style.", hidden=False if cli.config.user.developer else True) def pyformat(cli): """Format python code according to QMK's style. """ diff --git a/lib/python/qmk/cli/pytest.py b/lib/python/qmk/cli/pytest.py index 09611d750f..5417a9cb34 100644 --- a/lib/python/qmk/cli/pytest.py +++ b/lib/python/qmk/cli/pytest.py @@ -7,7 +7,7 @@ import subprocess from milc import cli -@cli.subcommand('QMK Python Unit Tests') +@cli.subcommand('QMK Python Unit Tests', hidden=False if cli.config.user.developer else True) def pytest(cli): """Run several linting/testing commands. """ |