diff options
Diffstat (limited to 'lib/python/qmk/cli/doctor/main.py')
| -rwxr-xr-x | lib/python/qmk/cli/doctor/main.py | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/lib/python/qmk/cli/doctor/main.py b/lib/python/qmk/cli/doctor/main.py index 6a6feb87d1..dd8b58b2c7 100755 --- a/lib/python/qmk/cli/doctor/main.py +++ b/lib/python/qmk/cli/doctor/main.py | |||
| @@ -9,10 +9,11 @@ from milc import cli | |||
| 9 | from milc.questions import yesno | 9 | from milc.questions import yesno |
| 10 | 10 | ||
| 11 | from qmk import submodules | 11 | from qmk import submodules |
| 12 | from qmk.constants import QMK_FIRMWARE, QMK_FIRMWARE_UPSTREAM | 12 | from qmk.constants import QMK_FIRMWARE, QMK_FIRMWARE_UPSTREAM, QMK_USERSPACE, HAS_QMK_USERSPACE |
| 13 | from .check import CheckStatus, check_binaries, check_binary_versions, check_submodules | 13 | from .check import CheckStatus, check_binaries, check_binary_versions, check_submodules |
| 14 | from qmk.git import git_check_repo, git_get_branch, git_get_tag, git_get_last_log_entry, git_get_common_ancestor, git_is_dirty, git_get_remotes, git_check_deviation | 14 | from qmk.git import git_check_repo, git_get_branch, git_get_tag, git_get_last_log_entry, git_get_common_ancestor, git_is_dirty, git_get_remotes, git_check_deviation |
| 15 | from qmk.commands import in_virtualenv | 15 | from qmk.commands import in_virtualenv |
| 16 | from qmk.userspace import qmk_userspace_paths, qmk_userspace_validate, UserspaceValidationError | ||
| 16 | 17 | ||
| 17 | 18 | ||
| 18 | def os_tests(): | 19 | def os_tests(): |
| @@ -92,6 +93,25 @@ def output_submodule_status(): | |||
| 92 | cli.log.error(f'- {sub_name}: <<< missing or unknown >>>') | 93 | cli.log.error(f'- {sub_name}: <<< missing or unknown >>>') |
| 93 | 94 | ||
| 94 | 95 | ||
| 96 | def userspace_tests(qmk_firmware): | ||
| 97 | if qmk_firmware: | ||
| 98 | cli.log.info(f'QMK home: {{fg_cyan}}{qmk_firmware}') | ||
| 99 | |||
| 100 | for path in qmk_userspace_paths(): | ||
| 101 | try: | ||
| 102 | qmk_userspace_validate(path) | ||
| 103 | cli.log.info(f'Testing userspace candidate: {{fg_cyan}}{path}{{fg_reset}} -- {{fg_green}}Valid `qmk.json`') | ||
| 104 | except FileNotFoundError: | ||
| 105 | cli.log.warn(f'Testing userspace candidate: {{fg_cyan}}{path}{{fg_reset}} -- {{fg_red}}Missing `qmk.json`') | ||
| 106 | except UserspaceValidationError as err: | ||
| 107 | cli.log.warn(f'Testing userspace candidate: {{fg_cyan}}{path}{{fg_reset}} -- {{fg_red}}Invalid `qmk.json`') | ||
| 108 | cli.log.warn(f' -- {{fg_cyan}}{path}/qmk.json{{fg_reset}} validation error: {err}') | ||
| 109 | |||
| 110 | if QMK_USERSPACE is not None: | ||
| 111 | cli.log.info(f'QMK userspace: {{fg_cyan}}{QMK_USERSPACE}') | ||
| 112 | cli.log.info(f'Userspace enabled: {{fg_cyan}}{HAS_QMK_USERSPACE}') | ||
| 113 | |||
| 114 | |||
| 95 | @cli.argument('-y', '--yes', action='store_true', arg_only=True, help='Answer yes to all questions.') | 115 | @cli.argument('-y', '--yes', action='store_true', arg_only=True, help='Answer yes to all questions.') |
| 96 | @cli.argument('-n', '--no', action='store_true', arg_only=True, help='Answer no to all questions.') | 116 | @cli.argument('-n', '--no', action='store_true', arg_only=True, help='Answer no to all questions.') |
| 97 | @cli.subcommand('Basic QMK environment checks') | 117 | @cli.subcommand('Basic QMK environment checks') |
| @@ -108,6 +128,9 @@ def doctor(cli): | |||
| 108 | cli.log.info('QMK home: {fg_cyan}%s', QMK_FIRMWARE) | 128 | cli.log.info('QMK home: {fg_cyan}%s', QMK_FIRMWARE) |
| 109 | 129 | ||
| 110 | status = os_status = os_tests() | 130 | status = os_status = os_tests() |
| 131 | |||
| 132 | userspace_tests(None) | ||
| 133 | |||
| 111 | git_status = git_tests() | 134 | git_status = git_tests() |
| 112 | 135 | ||
| 113 | if git_status == CheckStatus.ERROR or (os_status == CheckStatus.OK and git_status == CheckStatus.WARNING): | 136 | if git_status == CheckStatus.ERROR or (os_status == CheckStatus.OK and git_status == CheckStatus.WARNING): |
