def doctor(cli): """Basic QMK environment checks. This is currently very simple, it just checks that all the expected binaries are on your system. TODO(unclaimed): * [ ] Compile a trivial program with each compiler """ cli.log.info('QMK Doctor is checking your environment.') status = CheckStatus.OK # Determine our OS and run platform specific tests platform_id = platform.platform().lower() if 'darwin' in platform_id or 'macos' in platform_id: status = os_test_macos() elif 'linux' in platform_id: status = os_test_linux() elif 'windows' in platform_id: status = os_test_windows() else: cli.log.warning('Unsupported OS detected: %s', platform_id) status = CheckStatus.WARNING cli.log.info('QMK home: {fg_cyan}%s', QMK_FIRMWARE) # Make sure the basic CLI tools we need are available and can be executed. bin_ok = check_binaries() if not bin_ok: if yesno('Would you like to install dependencies?', default=True): run(['util/qmk_install.sh']) bin_ok = check_binaries() if bin_ok: cli.log.info('All dependencies are installed.') else: status = CheckStatus.ERROR # Make sure the tools are at the correct version ver_ok = [] for check in (check_arm_gcc_version, check_avr_gcc_version, check_avrdude_version, check_dfu_util_version, check_dfu_programmer_version): ver_ok.append(check()) if CheckStatus.ERROR in ver_ok: status = CheckStatus.ERROR elif CheckStatus.WARNING in ver_ok and status == CheckStatus.OK: status = CheckStatus.WARNING # Check out the QMK submodules sub_ok = check_submodules() if sub_ok == CheckStatus.OK: cli.log.info('Submodules are up to date.') else: if yesno('Would you like to clone the submodules?', default=True): submodules.update() sub_ok = check_submodules() if CheckStatus.ERROR in sub_ok: status = CheckStatus.ERROR elif CheckStatus.WARNING in sub_ok and status == CheckStatus.OK: status = CheckStatus.WARNING # Report a summary of our findings to the user if status == CheckStatus.OK: cli.log.info('{fg_green}QMK is ready to go') return 0 elif status == CheckStatus.WARNING: cli.log.info( '{fg_yellow}QMK is ready to go, but minor problems were found') return 1 else: cli.log.info( '{fg_red}Major problems detected, please fix these problems before proceeding.' ) cli.log.info( '{fg_blue}Check out the FAQ (https://docs.qmk.fm/#/faq_build) or join the QMK Discord (https://discord.gg/Uq7gcHh) for help.' ) return 2
def doctor(cli): """Basic QMK environment checks. This is currently very simple, it just checks that all the expected binaries are on your system. TODO(unclaimed): * [ ] Compile a trivial program with each compiler """ cli.log.info('QMK Doctor is checking your environment.') ok = True # Determine our OS and run platform specific tests platform_id = platform.platform().lower() if 'darwin' in platform_id or 'macos' in platform_id: if not os_test_macos(): ok = False elif 'linux' in platform_id: if not os_test_linux(): ok = False elif 'windows' in platform_id: if not os_test_windows(): ok = False else: cli.log.error('Unsupported OS detected: %s', platform_id) ok = False # Make sure the basic CLI tools we need are available and can be executed. bin_ok = check_binaries() if not bin_ok: if yesno('Would you like to install dependencies?', default=True): run(['util/qmk_install.sh']) bin_ok = check_binaries() if bin_ok: cli.log.info('All dependencies are installed.') else: ok = False # Make sure the tools are at the correct version if not check_arm_gcc_version(): ok = False if not check_avr_gcc_version(): ok = False # Check out the QMK submodules sub_ok = check_submodules() if sub_ok: cli.log.info('Submodules are up to date.') else: if yesno('Would you like to clone the submodules?', default=True): submodules.update() sub_ok = check_submodules() if not sub_ok: ok = False # Report a summary of our findings to the user if ok: cli.log.info('{fg_green}QMK is ready to go') else: cli.log.info('{fg_yellow}Problems detected, please fix these problems before proceeding.')
ok = False elif 'linux' in platform_id: if not os_test_linux(): ok = False elif 'windows' in platform_id: if not os_test_windows(): ok = False else: cli.log.error('Unsupported OS detected: %s', platform_id) ok = False # Make sure the basic CLI tools we need are available and can be executed. bin_ok = check_binaries() if not bin_ok: if yesno('Would you like to install dependencies?', default=True): run(['util/qmk_install.sh']) bin_ok = check_binaries() if bin_ok: cli.log.info('All dependencies are installed.') else: ok = False # Make sure the tools are at the correct version for check in (check_arm_gcc_version, check_avr_gcc_version, check_avrdude_version, check_dfu_util_version, check_dfu_programmer_version): if not check(): ok = False # Check out the QMK submodules sub_ok = check_submodules()