summaryrefslogtreecommitdiff
path: root/lib/python/qmk/cli/doctor/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python/qmk/cli/doctor/main.py')
-rwxr-xr-xlib/python/qmk/cli/doctor/main.py25
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
9from milc.questions import yesno 9from milc.questions import yesno
10 10
11from qmk import submodules 11from qmk import submodules
12from qmk.constants import QMK_FIRMWARE, QMK_FIRMWARE_UPSTREAM 12from qmk.constants import QMK_FIRMWARE, QMK_FIRMWARE_UPSTREAM, QMK_USERSPACE, HAS_QMK_USERSPACE
13from .check import CheckStatus, check_binaries, check_binary_versions, check_submodules 13from .check import CheckStatus, check_binaries, check_binary_versions, check_submodules
14from 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 14from 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
15from qmk.commands import in_virtualenv 15from qmk.commands import in_virtualenv
16from qmk.userspace import qmk_userspace_paths, qmk_userspace_validate, UserspaceValidationError
16 17
17 18
18def os_tests(): 19def 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
96def 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):